2010-08-20 57 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