我试图进入 djangos 注释,但不能完全弄清楚它是如何工作的。
我有一个函数,我想注释客户的查询集,过滤它们并返回客户的数量
def my_func(self):
received_signatures = self.customer_set.annotate(Count('registrations').filter().count()
现在对于过滤器部分,这就是我在弄清楚如何做到这一点时遇到的问题。我要过滤的是 my received_signatures
,这是在我的 customer.py 中调用的函数
def received_signatures(self):
signatures = [reg.brought_signature for reg in self.registrations.all() if reg.status == '1_YES']
if len(signatures):
return all(signatures)
else:
return None
brough_signature
是一个数据库字段
那么如何注释查询集,过滤收到的签名,然后返回一个数字?
相关型号信息:
class Customer(models.Model):
brought_signature = models.BooleanField(u'Brought Signature', default=False)
class Registration(models.Model):
brought_signature = models.BooleanField(u'Brought Signature', default=False)
status = models.CharField(u'Status', max_length=10, choices=STATUS_CHOICES, default='4_RECEIVED')
注意:参与者和注册可以拥有brought_signature
. 我在我的程序中有一个设置,允许我 A) 仅在我的参与者处标记bred_signature(这意味着他为他的所有注册带来了签名)或 B) 为他拥有的每个注册标记bred_signature
对于这种情况,选项 B) 是相关的。我用received_signatures
我检查客户是否为他的状态为“1_YES”的每个注册带来了每个签名,我想计算所有这样做的客户并返回一个数字(然后我在另一个函数中用于 pygal 图表)