[英]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.