我有以下简化的模型。
class Service(models.Model):
...
class ServiceLogs(models.Model):
service = models.ForeignKey(Service, related_name='logs', ...)
who_did = models.ForeignKey(User, ...)
role_played = models.CharField(choices=(('CA','CA'),
('CO', 'CO'),
('TO', 'TO')), ...)
我知道我可以通过打电话来找出谁扮演了什么角色
<service obj>.logs.filter(role='CA')
,但是考虑到我有3个角色,这种方法对每个对象访问数据库3次。
我正在阅读有关聚集和注释的文档,但是所有示例都使用诸如Sum,Avg等的数值。我尝试使用Q
进行查找,但Django抱怨消息'WhereNode' object has no attribute 'output_field'
< / p>
我可以提高查询效率,以便每个对象访问数据库一次吗?