我试图用JSON发送一个包含更多参数的列表。所有参数都起作用,但列表不起作用,列表保存为空列表。我使用的是Django REST框架和一个嵌套序列化程序。在
这是我的serializers.py
class TagSerializer(serializers.ModelSerializer):
class Meta:
model = Tag
fields = ('tagID', 'tagName')
class IncentiveSerializer(serializers.ModelSerializer):
tags=TagSerializer(many=True,read_only=True)
class Meta:
model = Incentive
fields = ('schemeName', 'schemeID','text','typeID','typeName','status','ordinal','tags','modeID',
'groupIncentive','condition')
这是我的models.py
我以JSON格式发送此信息
{
"schemeName": "SendEmails",
"schemeID": 1234,
"text": "HelloWorld",
"typeID": 345,
"typeName": "Emails",
"status": true,
"ordinal": 0,
"tags": [{"tagID":123,"tagName":"dor"}],
"modeID": 0,
"groupIncentive": false,
"condition": "SendEmails"
}
我从服务器上得到的结果是
{
"schemeName": "SendEmails",
"schemeID": 1234,
"text": "HelloWorld",
"typeID": 345,
"typeName": "Emails",
"status": true,
"ordinal": 0,
"tags": [],
"modeID": 0,
"groupIncentive": false,
"condition": "SendEmails"
}
我怎样才能将标签保存为列表?在
Django REST框架忽略了正在发送的
tags
,IncentiveSerializer
上的tags
字段被设置为read_only=True
,这意味着不能添加标记,它们只能被读取。因此,所有的标记都被忽略,没有任何东西会影响数据库。在您可以通过设置},并且drf3默认情况下不处理嵌套的序列化程序。Django REST框架文档有some useful information,用于以通用方式实现这些方法,但它很可能特定于序列化程序。在
read_only=False
来解决此问题,但这将要求您重写序列化程序上的create
和{这应该允许您在创建}找到。您可能需要更改此项以满足您所要查找的内容,因为嵌套对象的创建和更新非常依赖于情况。在
Incentive
时添加tags
,但是它要求标记已经存在并且可以被{相关问题 更多 >
编程相关推荐