说我有很好的老人/团体/会员关系
class Person(models.Model):
name = models.CharField(max_length=128)
def __unicode__(self):
return self.name
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person, through='Membership')
def __unicode__(self):
return self.name
class Membership(models.Model):
person = models.ForeignKey(Person)
group = models.ForeignKey(Group)
date_joined = models.DateField()
invite_reason = models.CharField(max_length=64)我想要一个通用视图,显示属于某个组(在URL中指定)的人员列表,该列表按Membership类的date_joined字段排序。我想我可以做一个这样的视图
def group_list(request, pagina):
return list_detail.object_list(
request,
queryset = Person.objects.filter(group__name = slug),
template_object_name = 'person',
extra_context = { 'membership' : Membership.objects.all() },
)然后只需通过membership__date_joined访问模板中的date_joined,但没有成功
发布于 2011-04-12 21:46:08
您实际要做的是从Membership对象开始。对于特定的Person和Group组合,这是唯一独一无二的事情-如果您从Person开始,就像您正在做的那样,访问他们的成员资格将为您提供所有成员,而不是您想要的成员。所以:
return list_detail.object_list(
request,
queryset = Membership.objects.filter(group__name = slug),
template_object_name = 'membership',
)现在在您的模板中:
{% for member in membership %}
{{ member.person.name }}: {{ member.date_joined }}
{% endif %}发布于 2011-04-12 21:22:00
一种选择是直接在中介模型上过滤:
members = [member.person for member in Membership.objects.filter(group__name=slug).order_by('-date_joined')]或者仅仅是members = Membership.objects.filter(group__name=slug).order_by('-date_joined')
然后在模板中迭代此列表,如下所示:
{% for member in members %}
{{ member.person.name }} : {{ member.date_joined }}
{% endfor %}https://stackoverflow.com/questions/5635475
复制相似问题