Django,组中的用户排序

时间:2017-12-30 11:18:36

标签: django

我想向我的Django应用程序的每个组显示用户。

{% for group in groups %}
    <h2>{{ group }}</h2>
    {% for user in group.user_set.all %}
        <div>
            {{ user }}
        </div>
    {% endfor %}
{% endfor %}

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

我怎么能实现这一目标?我怀疑它可以使用自定义过滤器来完成,但我不确定它是否是正确的方法,或者是否有更好的过滤器。

2 个答案:

答案 0 :(得分:1)

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

serializer.py

    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 :(得分:0)

我最终使用自定义过滤器来解决它。

@register.filter_function
def order_by(queryset, args):
    args = [x.strip() for x in args.split(',')]
    return queryset.order_by(*args)

然后,在我的模板中,我只使用那个过滤器,它就像一个魅力。

{% for group in groups %}
    <h2>{{ group }}</h2>
    {% for user in group.user_set.all|order_by:"date_joined" %}
        <div>
            {{ user }}
        </div>
    {% endfor %}
{% endfor %}