Задать вопрос
@b1ngo

Как добавить в сериалайзер поле, которого нет в модели?

Всем здравствуйте, познаю Django, можно ли как то добавить в сериалайзер поля, которые не встречаются в самой модели? Нужно из модели Car вытащить все авто, которые произведены производителем. При самом добавлении car в сериалайзер Джанго ругается так: 'QuerySet' object has no attribute 'car'
views.py
class CreatorAPIView(APIView):

    def get(self, request):
        query_params = request.query_params
        creator_name = query_params.get('name', None)

        if creator_name is None:
            return Response({'error': 'No name provided'})

        lst = Creator.objects.filter(name=creator_name)

        serializer = CreatorSerializer(lst, many=True)

        return Response(serializer.data)

models.py
class Creator(models.Model):
    name = models.TextField(max_length=60, help_text='Производитель')
    country = models.TextField(max_length=60, help_text='Страна')

    class Meta:
        verbose_name = 'Производитель'
        verbose_name_plural = 'Производители'

    def __str__(self):
        return self.name


class Car(models.Model) :
    car = models.TextField(max_length=60, help_text='Модель авто')
    creator = models.TextField(max_length=100, help_text='Производитель')
    first_year = models.CharField(max_length=4, help_text='Начало выпуска')
    last_year = models.CharField(max_length=4, help_text='Окончание выпуска(если производится до сих пор - нв)')

    class Meta:
        verbose_name = 'Машина'
        verbose_name_plural = 'Машины'

    def __str__(self):
        return self.car

serializers.py
class CreatorSerializer(serializers.Serializer):
    class Meta:
        model = Creator

    name = serializers.CharField(max_length=60)
    country = serializers.CharField()
  • Вопрос задан
  • 225 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
fox_12
@fox_12 Куратор тега Django
Расставляю биты, управляю заряженными частицами
Вытяните желаемое через @property класса модели к примеру...
Ответ написан
Ваш ответ на вопрос

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

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