我想向我的Django应用程序的每个组显示用户。
{% for group in groups %}
<h2>{{ group }}</h2>
{% for user in group.user_set.all %}
<div>
{{ user }}
</div>
{% endfor %}
{% endfor %}
这很有用,但对于这个特定的模板,我希望用户按其date_joined属性进行排序。
我怎么能实现这一目标?我怀疑它可以使用自定义过滤器来完成,但我不确定它是否是正确的方法,或者是否有更好的过滤器。
答案 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 %}