簡體   English   中英

Django獲取ManyToMany關系的對象和關系字段

[英]Django get object and relation field of a ManyToMany Relationship

我想知道是否可以通過單個查詢完成

我的models.py的模型本身具有M2M

class Person(models.Model):
    objectid = models.AutoField(primary_key=True)
    name = models.CharField()
    relations = models.ManyToManyField(
        self, 
        on_delete = models.CASCADE, 
        through = Person_Person, #This lets you define the model that will act as an intermadiary
        symmetrical = False, #This needs to be set with recursive relationships
    )

class Person_Person(models.Model):
    cod_person_1 = models.ForeignKey('Person', on_delete=models.CASCADE, related_name='%(class)s_cod_person_1')
    cod_person_2 = models.ForeignKey('Person', on_delete=models.CASCADE, related_name='%(class)s_cod_person_2')
    relation = models.IntegerField(choices =             
        ((0, 'Parent'),
        (1, 'Child'),
        (2, 'Engaged'),
        (3, 'Widow'),
        (4, 'Related')),
    default = 4)

然后我將此功能添加到Person模型以獲取所有相關的Person

class Person(models.Model):
    ...
    def getRelated(self):
        return self.relations.all()

self.relations.all()返回一個帶有Person對象的QuerySet ,但我還需要從Person_Person獲取relation字段

獲取對象本身並不重要,我只需要字段值即可。

您可以顯式獲取這些實例,同時還可以使用select_related

class Person(models.Model):
    ...
    def get_related(self):
        qs = Person_Person.objects.select_related('cod_person_2')
        return qs.filter(cod_person_1=self)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM