__init __()缺少1个必需的位置参数:“ model_field”

时间:2019-02-02 10:59:21

标签: django django-rest-framework django-serializer

我正在尝试使用嵌套序列化程序,如果我从序列化程序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'

1 个答案:

答案 0 :(得分:0)

ProductSerializer从serializers.ModelField继承,而不是 serializers.ModelSerializer