2017-12-30 3 views
0

Ich möchte die Benutzer jeder Gruppe meiner Django App zeigen.Django, Benutzer in der Gruppe sortiert

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

Dies funktioniert gut, aber für diese spezielle Vorlage, würde ich die Benutzer wie durch ihr date_joined Attribut sortiert werden.

Wie konnte ich das erreichen? Ich vermute, dass es mit einem benutzerdefinierten Filter gemacht werden könnte, aber ich bin nicht wirklich sicher, ob es der richtige Weg ist oder ob es einen besseren gibt.

Antwort

1

können Sie Serializer versuchen

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 
0

landete ich es lösen, indem Sie einen benutzerdefinierten Filter verwenden.

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

Dann, in meiner Vorlage verwende ich nur diesen Filter und es funktioniert wie ein Charme.

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