@Unknown672

Как передать данные массивом в DRF?

Есть у меня модель Profile, а также модель Rating:

class Profile(models.Model):
    ....

class Rating(models.Model):
    profile = models.ForeignKey(
        Profile, on_delete=models.CASCADE, related_name="rating", 
        verbose_name="Рейтинг", blank=True, null=True
    )
    rating = models.IntegerField("Оценка")


Я передаю данные о рейтинге через такой сериализатор:

class RatingSerializer(serializers.ModelSerializer):
    # Рейтинг специалистов

    class Meta:
        model = Rating
        fields = ['rating']


class ProfileSerializer(serializers.ModelSerializer):
    # Профиль юзера

    rating = RatingSerializer(many=True)

    class Meta:
        model = Profile
        fields = [
            ...
            'rating'
        ]


Проблема в том, что данные возвращаются мне как массив обьектов, однако мне нужно, чтобы это был массив со значениями из полей rating, то есть: [5, 3, 4, 4, 5]
Вопрос, как это сделать?

Пока что выдает таким образом:

"rating": [  
        {  
            "rating": 5  
        },  
        {  
            "rating": 4  
        },  
        {  
            "rating": 5  
        }  
 ],
  • Вопрос задан
  • 249 просмотров
Решения вопроса 1
Astrohas
@Astrohas
Python/Django Developer
Ну можете же банальным обойтись
rating = serializers.SerializerMethodField()

def get_rating(self, profile):
    return [pr.rating for pr in profile.rating.all()]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы