我有一些序列化程序,我有一些元素,并希望在我为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的语法是坏的还是什么?
答案 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)
问题出在序列化器字段上。使用正确的标志对其进行配置。