Получить список пользователей и комментарии, сделанные ими (Django Serializer) - PullRequest
0 голосов
/ 19 марта 2019

Таблица пользователей (с полями id, name) и Таблица комментариев (Comment, CreatedBy (integer) - это идентификатор пользователя).

Как мне написать сериализатор для получения списка пользователей, которыйдолжен содержать массив комментариев, созданных каждым пользователем.

class UserSerializer(serializers.ModelSerializer):
     class Meta:
          model = Users
          fields = ('id','name')

class CommentSerializer(serializers.ModelSerializer):
     class Meta:
          model = UserComments
          fields = ('id','comment','created_by')

Ожидается вывод ниже:

[
       {
          "id":1,
          "name":"Tony",
          "comments":[
             {
                "id":1,
                "comment":"This is a test comment"
             },
             {
                "id":2,
                "comment":"This is a test comment2"
             }
          ]
       },
       {
          "id":2,
          "name":"Alaric",
          "comments":[
             {
                "id":3,
                "comment":"This is a test comment3"
             },
             {
                "id":4,
                "comment":"This is a test comment4"
             }
          ]
       }
    ]

1 Ответ

1 голос
/ 19 марта 2019

Лучшим способом для этого было бы использование отношения ForeignKey и вложенных сериализаторов, но если по какой-то причине вы не можете объявить отношение внешнего ключа между UserComments и Users , вы можете используйте SerializerMethodField s:

class UserSerializer(serializers.ModelSerializer):
    comments = serializers.SerializerMethodField()

    class Meta:
         model = Users
         fields = ('id','name', 'comments')

    def get_comments(self, obj):
        return CommentSerializer(UserComments.objects.filter(created_by=obj.id), many=True).data
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...