我想向每一组用户展示我的Django应用程序。
{% for group in groups %}
<h2>{{ group }}</h2>
{% for user in group.user_set.all %}
<div>
{{ user }}
</div>
{% endfor %}
{% endfor %}
这很有效,但是对于这个特定的模板,我希望根据用户的date_joined属性对用户进行排序。
我怎样才能做到这一点呢?我怀疑它可以使用自定义过滤器来完成,但我不确定这是不是正确的方法,或者是否有更好的方法。
发布于 2017-12-30 12:42:57
您可以尝试使用序列化程序
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
发布于 2017-12-30 18:30:23
我最终使用自定义过滤器解决了这个问题。
@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 %}
https://stackoverflow.com/questions/48033414
复制