我有一个带有嵌套多对多字段的序列化程序,父序列化程序有一个create()覆盖:
tags = TagSerialiser(many=True)
我希望m2m只读,但POST将包含数据。在这种情况下,我想根据字符串查找预先存在的标记并链接它们,否则创建一个新标记(标记字符串标准化)以及其他检查和模型创建。
将关系的序列化程序字段设置为只读时,即使POST为POST,数据也不会传递给创建。
将其设置为读/写会导致验证错误,因为create()方法以后而不是创建嵌套关系。在我的例子中,我得到了唯一约束的例外。
有没有办法在create()方法中处理嵌套关系的编写?我想在这里创建模型或链接现有模型。使用PK / URL关系并让DRF解决它不是一个选项。
(Django Rest Framework 3.0.2,Django 1.7)
答案 0 :(得分:1)
是的,您可以将其设置为readonly
,然后使用POST
not validated_data
def create(self,validated_data):
request = self.context['request']
_tags = request.POST.get('tags',None)
# then create your tags instances
tags = Tag.objects.bulk_create(_tags)
# and then create your main object.