2011-11-02 62 views
3

假設我有一個包含多個標籤的博客條目。標籤字段是我的模型中的ManyToMany。我想採取所有博客條目,併爲每個條目我想獲得所有標籤。Django MultipleObjectsReturned

基本上我會做這樣的事情

 
entries = Entries.objects.get(author=user) 
for entry in entries: 
    tags[entry.pk] = entry.tags.all() 

的問題是,我得到的MultipleObjectsReturned錯誤。

回答

11

如果你想與author=user返回所有條目,然後使用filter()

entries = Entries.objects.filter(author=user) 

此刻,你正在使用get(),這預計將返回一個Entries對象。由於Entriesauthor=user之間的差異越大,您將收到Entries.MultipleObjectsReturned錯誤。

請注意,在Django中,慣例是使用單數名稱Entry代替複數Entries

+0

謝謝!現在它運作完美。 – bogtan

3

你使用的是get,當你應該使用filter

僅當使用get時,只有一個可能的結果。在這種情況下,您將返回對象本身,而不是查詢集。那麼沒有什麼可以循環,所以for是無關的。

如果您確實需要查詢集,則必須使用filter

相關問題