2010-08-20 9 views
7

Considere los siguientes modelos:Cómo acceder a los campos personalizados en un muchos-a-muchos a través de objeto en plantillas

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) 

membresía es una medida de muchos a través de mayo objeto con campos adicionales.
Si tengo una instancia de persona, ¿cómo puedo acceder a los campos date_joined correspondientes de todas sus relaciones de membresía, tanto en código regular como en un archivo de plantilla django?

Respuesta

10

person.membership_set.all() le dará una lista de todas las instancias Membership para un person dado. Puede usar esto tanto en el código regular como en la plantilla.

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

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

¿Puede mostrar la vista? ¿Consiste en el diccionario como argumento para la función de representación solo de persona? ¿Por qué se escribe la función membership_set en minúsculas cuando la Membresía Class es superior? – Timo

Cuestiones relacionadas