我正在尝试使用嵌套序列化程序,如果我从序列化程序A中删除“ product = ProductSerializer()”,则代码将成功运行,否则会出现以下错误。
SizeSerializer如何工作,而Productserializer却不起作用。
模型A
class SKU(models.Model):
size = models.ForeignKey(Size,on_delete=models.CASCADE)
product = models.ForeignKey(Product,on_delete=models.CASCADE)
number = models.CharField(max_length=100,null=True,blank=True)
price = models.IntegerField(null=True,blank=True)
parent_sku = models.CharField(max_length=100,null=True,blank=True)
active = models.BooleanField(default=True)
模型B
class Product(models.Model):
name = models.CharField(max_length=200,null=True,blank=True)
active = models.BooleanField(default=True)
序列化器A
class SKU_Serializer(serializers.ModelSerializer):
size = SizeSerializer()
product = ProductSerializer()
class Meta:
model = SKU
exclude = ('created_at','updated_at')
序列化器B
class ProductSerializer(serializers.ModelField):
class Meta:
model = Product
exclude = ('created_at','updated_at')
json
{
"id": 1,
"size": {
"id": 1,
"name": "XL",
"active": true
},
"number": "Muriel Treppas",
"price": 899,
"parent_sku": "Muriel",
"active": true,
"product": 1
},
输出(错误)
File "D:\1___DEVELOPMENT\Clothing\hoplet\sku\views.py", line 6, in <module>
from sku.serializers import SKU_Serializer
File "D:\1___DEVELOPMENT\Clothing\hoplet\sku\serializers.py", line 8, in <module>
class SKU_Serializer(serializers.ModelSerializer):
File "D:\1___DEVELOPMENT\Clothing\hoplet\sku\serializers.py", line 10, in SKU_Serializer
product = ProductSerializer()
TypeError: __init__() missing 1 required positional argument: 'model_field'
答案 0 :(得分:0)
ProductSerializer从serializers.ModelField
继承,而不是
serializers.ModelSerializer
。