我正在尝试以最有效的方式在 Django 中进行非常复杂的查询,但我不知道如何开始。我有这些模型(这是简化版)
class Status(models.Model):
status = models.CharField(max_length=200)
class User(models.Model):
name = models.CharField(max_length=200)
class Event(models.Model):
user = models.ForeignKey(User)
class EventItem(models.Model):
event = models.ForeignKey(Event)
rev1 = models.ForeignKey(Status, related_name='rev1', blank=True, null=True)
rev2 = models.ForeignKey(Status, related_name='rev2', blank=True, null=True)
active = models.BooleanField()
我想创建一个查询,该查询将生成具有最多事件的用户列表,其中所有依赖的 EventItems 都具有rev1
并且rev2
不是空白或 nulland active = True
。
我知道我可以通过遍历用户列表然后检查他们的所有事件是否匹配rev1
,rev2
和active
条件然后返回这些事件来做到这一点,但这对数据库来说很重。有什么建议么?
谢谢!