我有一个抽象模型组,有2个孩子公司和邦德(我简化了我的例子)。由于我的模型WorkRelation,这些孩子与Contacts相关联。我想编写一个函数get_number_of_contacts(),它返回通过对象WorkRelation与组连接的用户数量。
这非常难,因为我使用通用外键。甚至可以在这种结构中实现这种方法吗?
这是我简化的 models.py:
class Group(BaseModel):
name = models.CharField(max_length=30, unique=True)
*** a lot more attributes ***
---> def get_number_of_contacts(self):
return 69
class Meta:
abstract = True
class Company(Group):
def __str__(self):
return "Company " + self.name
class Meta:
app_label = 'groups'
class Bond(Group):
def __str__(self):
return "Bond " + self.name
class Meta:
app_label = 'groups'
class WorkRelation(BaseModel):
contact = models.OneToOneField(Contact, on_delete=models.CASCADE, primary_key=Tru)
group_type = models.ForeignKey(ContentType)
group_id = models.PositiveIntegerField()
group = GenericForeignKey('group_type', 'group_id')
*** A lot more attributes ***
答案 0 :(得分:0)
看起来你想要计算的实际上是特定组的WorkRelation对象的数量,这很容易:
WorkRelation.objects.filter(group=my_group).count()
由于您与联系人有一对一的关系,您也可以计算联系人,但这会以额外的数据库加入为代价得到完全相同的结果:
Contact.objects.filter(workrelation__group=my_group).count()