Django Rest Framework间接嵌套编写

时间:2015-04-10 21:28:14

标签: python django-rest-framework

我有一个带有嵌套多对多字段的序列化程序,父序列化程序有一个create()覆盖:

tags = TagSerialiser(many=True)

我希望m2m只读,但POST将包含数据。在这种情况下,我想根据字符串查找预先存在的标记并链接它们,否则创建一个新标记(标记字符串标准化)以及其他检查和模型创建。

将关系的序列化程序字段设置为只读时,即使POST为POST,数据也不会传递给创建。

将其设置为读/写会导致验证错误,因为create()方法以后而不是创建嵌套关系。在我的例子中,我得到了唯一约束的例外。

有没有办法在create()方法中处理嵌套关系的编写?我想在这里创建模型或链接现有模型。使用PK / URL关系并让DRF解决它不是一个选项。

(Django Rest Framework 3.0.2,Django 1.7)

1 个答案:

答案 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.