2012-03-29 18 views
1

我想獲得ManyToMany與模型B關聯的模型A的對象列表,例如,食客(A)確認參加一頓飯(B)。但我不確定我應該使用什麼吸氣劑。我其實想要這樣做,以顯示管理面板中的關聯對象。下面的方法是我做的一次失敗的嘗試。Django模型ManytoMax getters

class Meal(models.Model): 
    diners = models.ManyToManyField(User, through='Attendance', related_name="eating", blank=True) 

    def diners(self): 
     return self.eating 

你能幫忙嗎? 謝謝

+1

self.diners.all()is'n你需要什麼? – ilvar 2012-03-29 02:25:39

回答

1

正如ilvar的建議,刪除食客方法,並使用self.diners.all()來獲取對象在Meal方法內。 related_name ='eating'用於反向提取用戶的膳食。

+0

感謝您的回覆。因此,在膳食模式,我把: \t'高清吃(個體經營): \t回self.diners.all()' 並在MealAdmin文件我把: '類MealAdmin(admin.ModelAdmin) : list_display =( '摘要', '何時', '主機', '網址', '食客') 通 admin.site.register(膳食,MealAdmin)' 這給我的錯誤: **例外類型:\t錯誤配置 例外值:\t 'MealAdmin .list_display [4]','diners'是不支持的ManyToManyField。** – KindOfGuy 2012-03-29 10:41:28

+0

@ user77510 list_display不支持ManyToManyField。如果您想在admin change_list中顯示晚餐字段的項目,則需要編寫一些方法直接呈現列的內容,請參閱https://docs.djangoproject.com/en/dev/ref/contrib/admin/ #django.contrib.admin.ModelAdmin.list_display – okm 2012-03-29 11:36:29

+0

是的,我已經看到,這是這個線程是如何開始的。我試圖按照上面的方法制作該方法,然後按照上面的方法,但是之後我遇到了上述問題。該方法似乎不起作用。你怎麼看?謝謝 – KindOfGuy 2012-03-29 15:20:15

0

我到達了與OP相同的問題頁面。最後,我簡單地刪除了在我的管理員模型中對list_display中的ManyToMany字段的引用。結果是:在該應用的管理頁面上,在ManyToMany字段名稱下,出現了一個格式良好的多選列表小部件,其中顯示了我的ManyToMany關係的可能值。

因此,解決方案是刪除list_display中的引用並讓Django處理它。這是與Django 1.4.3。