类报价序列化程序缺少"Meta.model"属性



我一直在尝试在Django rest框架中构建报价管理应用程序。所以我做了以下系列化

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
}

但我得到了错误:-类OfferSerializer丢失"元模型";属性在上面的代码中,我创建了元模式;但为什么我会犯那个错误?

更新,现在我对程序进行了更改我已经建立了模型

class Offer(models.Model):
name= models.CharField(max_length=10)
valid_from=models.DateField()
valid_to=models.DateField()
is_disabled=models.BooleanField()
def __str__(self):
return self.name

串行化.py

class OfferSerializer(serializers.ModelSerializer):
class Meta:
model = Offer  
fields = ('name', 'valid_from', 'valid_to','is_disabled')

视图集.py

class OfferViewSet(viewsets.ModelViewSet):
queryset=models.Offer.objects.all()
serializer_class=serializers.OfferSerializer

router.py

router = routers.DefaultRouter()
router.register('Offer',OfferViewSet)

urls.py

urlpatterns = [
path('api/',include(router.urls))
]

但我仍然得到同样的错误,类OfferSerializer丢失";元模型";属性

请帮我

如果没有与序列化程序关联的模型,则从serializers.ModelSerializer切换到serializers.Serializer

此外,Meta.fields在代码中是set,也许这也适用,但在文档中,他们使用的是list,如下所示:['id', 'Name', 'valid_from', 'valid_to', 'is_disabled']

当您在序列化程序中使用Meta类的fields属性或从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上的唯一约束进行验证。

最新更新