我想在Django中以最有效的方式做一個非常複雜的查詢,我不知道如何開始。我有這些模型(這是一個簡化版本)最有效的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
標準,然後返回這些事件做到這一點,但是這是沉重的數據庫上。有什麼建議麼?
謝謝!
謝謝,羅馬,但它並沒有真正符合我的問題 - 我我沒有使用'ManyToMany'字段 - 任何想法我如何用我現有的模型做事。我最初忘記了'EventItem'中的'event'字段,但我補充說。謝謝! – 2013-02-28 01:04:13
對於以「什麼是規劃我的模型......查詢類型的最佳方式」開頭的問題,這是一個很好的答案。 不幸的@JonoBacon沒有問這個問題。也許下次呢? – airtonix 2013-02-28 01:57:53