2010-08-20 58 views
7

對象考慮以下車型領域:如何訪問定製的許多一對多通過模板

class Person(models.Model): 
    name = models.CharField(max_length=128) 

class Group(models.Model): 
    name = models.CharField(max_length=128) 
    members = models.ManyToManyField(Person, through='Membership') 

class Membership(models.Model): 
    person = models.ForeignKey(Person) 
    group = models.ForeignKey(Group) 
    date_joined = models.DateField() 
    invite_reason = models.CharField(max_length=64) 

成員是一個定製的多到可以通過使用額外字段對象。
如果我有一個person實例,我如何訪問所有成員關係的相應date_joined字段 - 無論是在常規代碼中還是在django模板文件中?

回答

10

person.membership_set.all()將給出給定person的所有Membership實例的列表。您可以在常規代碼以及模板中使用它。

for each in person.membership_set.all(): 
    print each.date_joined 

{% for each in person.membership_set.all %} 
    {{ each.date_joined }} 
{% endfor %} 
+0

你可以顯示視圖嗎?把字典作爲只有人的渲染函數的參數?爲什麼當類成員資格較高時,membership_set函數以小寫形式寫入? – Timo 2014-05-02 18:58:56