2012-08-31 130 views
2

我正在構建一個博客站點,並在類別和帖子方面有模型。帖子對類別有多對多的關係。Django雙向關係

class Post(models.Model): 
    categories = models.ManyToManyField(Category) 

一切都來自一個事實,即在模板類別列表中,我只想要加載實際上有職位分類工作的罰款一邊。

如果一個類別爲空,我不想顯示它,我試圖在類別中定義一個關係以便發佈以允許我使用類似{{ if category.posts }}的內容。目前在類別中使用另一個多對多字段目前在管理員中給了我一個額外的字段,我並不想要或不需要這種字段。

如何最好地導航這種關係,或創建一個合適的關係?

乾杯 千電子伏

回答

0

您可以在ManyToMany字段使用reverse relations。在逆向過濾器中,您必須使用相關的型號名稱(如果您未使用related_name屬性)。在意見

{% if category.post %} 

您也可以使用這個在您的過濾功能:所以你的問題,你可以使用型號名稱爲像反向名稱

Category.objects.filter(post__isnull=False) 

反向關係名必須是小寫。

檢查文檔here

4

的Django上的任何ForeignKey的或多對多關係相關的示範自動創建的字段。您可以控制在通過這樣的related_name期權相關的模型字段的名稱:

class Post(models.Model): 
categories = models.ManyToManyField(Category,related_name='posts') 

這樣一來,你的方法工作沒有任何附加字段。順便說一句,如果省略related_name參數,Django將默認創建一個[field_name] _set。