В классе OfferSerializer отсутствует атрибут "Meta.model"

Я пытался создать приложение для управления предложениями в Django rest framework. Поэтому я сделал следующий серилизатор

class OfferSerializer(serializers.ModelSerializer):
        class Meta:
             fields = {
             'id'
             'Name'
             'valid_from'
             'valid_to'
             'is_disabled'
           }
           fields = '__all__'

и когда я передал следующее в формате jason

     {
            "id":1,
            "Name" : "Discount Offer",
            "valid_from":"2021-05-21",
            "valid_from":"2021-08-21",
            "is_disabled":1
}

Но я получаю ошибку :- Class OfferSerializer missing "Meta.model" attribute В приведенном выше коде я создал мета-модель, но все же почему я получаю эту ошибку?

Если у вас нет модели, связанной с сериализатором, то переключитесь с serializers.ModelSerializer на serializers.Serializer

Кроме того, в вашем коде Meta.fields стоит set, возможно, это тоже работает, но в документации они используют list так: ['id', 'Name', 'valid_from', 'valid_to', 'is_disabled']

Когда вы используете атрибут fields класса Meta в сериализаторе или наследуете от serializers.ModelSerializer, это означает, что вы пишете сериализатор для существующей модели.

Если у вас нет предопределенной модели и вам нужен сериализатор, используйте классический способ следующим образом :

from rest_framework import serializers

class OfferSerializer(serializers.Serializer):
    id = serializers.IntegerField()
    name = serializers.CharField(max_length=200)
    valid_from = serializers.DateTimeField()
    valid_to = serializers.DateTimeField()
    is_disabled = serializers.BooleanField(default=False)

NB: Вы сами должны проверить уникальность ограничения на ID.

Вернуться на верх