首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django通过字段对object_list排序

django通过字段对object_list排序
EN

Stack Overflow用户
提问于 2011-04-12 20:52:28
回答 2查看 739关注 0票数 0

说我有很好的老人/团体/会员关系

代码语言:javascript
复制
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字段排序。我想我可以做一个这样的视图

代码语言:javascript
复制
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,但没有成功

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-12 21:46:08

您实际要做的是从Membership对象开始。对于特定的Person和Group组合,这是唯一独一无二的事情-如果您从Person开始,就像您正在做的那样,访问他们的成员资格将为您提供所有成员,而不是您想要的成员。所以:

代码语言:javascript
复制
return list_detail.object_list(
    request,
    queryset = Membership.objects.filter(group__name = slug),
    template_object_name = 'membership',
)

现在在您的模板中:

代码语言:javascript
复制
{% for member in membership %}
    {{ member.person.name }}: {{ member.date_joined }}
{% endif %}
票数 1
EN

Stack Overflow用户

发布于 2011-04-12 21:22:00

一种选择是直接在中介模型上过滤:

代码语言:javascript
复制
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')

然后在模板中迭代此列表,如下所示:

代码语言:javascript
复制
{% for member in members %}
    {{ member.person.name }} : {{ member.date_joined }}
{% endfor %}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5635475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档