首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django,组中的用户排序

Django,组中的用户排序
EN

Stack Overflow用户
提问于 2017-12-30 19:18:36
回答 2查看 162关注 0票数 0

我想向每一组用户展示我的Django应用程序。

代码语言:javascript
运行
复制
{% for group in groups %}
    <h2>{{ group }}</h2>
    {% for user in group.user_set.all %}
        <div>
            {{ user }}
        </div>
    {% endfor %}
{% endfor %}

这很有效,但是对于这个特定的模板,我希望根据用户的date_joined属性对用户进行排序。

我怎样才能做到这一点呢?我怀疑它可以使用自定义过滤器来完成,但我不确定这是不是正确的方法,或者是否有更好的方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-30 20:42:57

您可以尝试使用序列化程序

serializer.py

代码语言:javascript
运行
复制
    from rest_framework import serializers
    class UserSerializerserializers.ModelSerializer):
        class Meta:
            model = User
            fields = ('username')
            order_by = ('date_joined')

    class GroupSerializer(serializers.ModelSerializer):
        users = UserSerializerserializers(many=True)
        class Meta:
            model = Group
            fields = ('name', 'users')


    >  groups = Group.objects.all() 
    >  required_result = GroupSerializer(groups,many=True)
    >  required_result.data # will give you a json
票数 1
EN

Stack Overflow用户

发布于 2017-12-31 02:30:23

我最终使用自定义过滤器解决了这个问题。

代码语言:javascript
运行
复制
@register.filter_function
def order_by(queryset, args):
    args = [x.strip() for x in args.split(',')]
    return queryset.order_by(*args)

然后,在我的模板中,我只需使用该过滤器,它就像一个护身符。

代码语言:javascript
运行
复制
{% for group in groups %}
    <h2>{{ group }}</h2>
    {% for user in group.user_set.all|order_by:"date_joined" %}
        <div>
            {{ user }}
        </div>
    {% endfor %}
{% endfor %}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48033414

复制
相关文章

相似问题

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