【问题标题】:Django Rest Framework indirect nested writingDjango Rest Framework 间接嵌套写法
【发布时间】:2015-04-10 21:28:13
【问题描述】:

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

tags = TagSerialiser(many=True)

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

将关系的序列化器字段设置为只读时,即使已发布数据,也不会将数据传递给 created。

将其设置为读/写会导致验证错误,因为 create() 方法晚于创建嵌套关系。就我而言,我得到了独特约束的例外情况。

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

(Django Rest Framework 3.0.2,Django 1.7)

【问题讨论】:

    标签: python django-rest-framework


    【解决方案1】:

    是的,您可以将其设置为readonly,然后使用POST not valid_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. 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-20
      • 1970-01-01
      • 1970-01-01
      • 2023-01-10
      • 1970-01-01
      • 1970-01-01
      • 2023-01-08
      • 2014-12-21
      相关资源
      最近更新 更多