JSON [{“non_field_errors”:[“无效数据”]}]} Django Rest Framework

时间:2015-02-05 11:11:58

标签: json django django-rest-framework serializer

我有一些序列化程序,我有一些元素,并希望在我为InvoiceDictionarySerializer创建POST方法时将其POST。不知道如何让它正常工作。有什么建议吗?

我的代码如下:

class InvoiceDictionaryElementSerializer(serializers.ModelSerializer):
class Meta:
    model = InvoiceDictionaryElement
    fields = (
        'name', 'unit', 'quantity', 'value'
    )


class InvoiceDictionarySerializer(serializers.ModelSerializer):
    invoice_elements = InvoiceDictionaryElementSerializer()
    class Meta:
        model = InvoiceDictionary
        fields = (
            'name', 'is_active', 'invoice_elements')

和我对JSON的请求:

{
"name": "invoice", 
"is_active": true, 
"invoice_elements":  [{
        "name": "name", 
        "unit": "12", 
        "quantity": "15.00", 
        "value": "7.00"
    }]

}

得到错误:

{"invoice_elements": [{"non_field_errors": ["Invalid data"]}]}

在我的conslote输出上我有400错误(错误的请求)。不知道JSON的语法是坏的还是什么?

2 个答案:

答案 0 :(得分:0)

由于invoice_elements是元素列表,因此您需要指定many=True

class InvoiceDictionarySerializer(serializers.ModelSerializer):
    invoice_elements = InvoiceDictionaryElementSerializer(many=True)
    class Meta:
        model = InvoiceDictionary
        fields = (
            'name', 'is_active', 'invoice_elements')

    def create(self, validated_data):
        ...

    def update(self, instance, validated_data):
        ...
处理保存多个对象的序列化程序的

You should also implement .create().update()方法。

答案 1 :(得分:0)

example_entry = serializers.CharField(required=True/False)

问题出在序列化器字段上。使用正确的标志对其进行配置。