試圖檢索博客(見下文模型描述)包含滿足某些標準的條目:Django的查詢集過濾方法返回多個條目爲一個記錄
Blog.objects.filter(entries__title__contains='entry')
結果是:
[<Blog: blog1>, <Blog: blog1>]
相同由於執行JOIN以過濾相關模型上的對象,因此博客對象被檢索兩次。什麼是僅過濾唯一對象的正確語法?
數據模型:
class Blog(models.Model):
name = models.CharField(max_length=100)
def __unicode__(self):
return self.name
class Entry(models.Model):
title = models.CharField(max_length=100)
blog = models.ForeignKey(Blog, related_name='entries')
def __unicode__(self):
return self.title
樣本數據:
b1 = Blog.objects.create(name='blog1')
e1 = Entry.objects.create(title='entry 1', blog=b1)
e1 = Entry.objects.create(title='entry 2', blog=b1)
感謝。我只是沒有預料到來自神奇的ORM的這種行爲:)該文件實際上提到了這種情況,但我預計它將在有關查詢相關對象的章節中進行介紹。 – Yaroslav 2010-04-16 15:58:43
您可以添加鏈接到文檔的相應部分以供參考? – m000 2012-10-12 17:28:08