__init __ () отсутствует 1 обязательный позиционный аргумент: 'model_field' - PullRequest
0 голосов
/ 02 февраля 2019

Я пытаюсь использовать Nested Serializer, если я удаляю «product = ProductSerializer ()» из сериализатора A, код выполняется успешно, иначе выдает ошибку ниже.

Как работает 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 голосов
/ 02 февраля 2019

ProductSerializer наследуется от serializers.ModelField вместо serializers.ModelSerializer.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...