Django Rest Framework默认字段验证问题

时间:2019-03-14 12:01:25

标签: django rest django-rest-framework

对于这样的嵌套模型,我遇到以下问题:

def Post(models.Model)
    name = models.CharField(unique=True)
    content = models.TextField()

def Comment(models.Model)
    post = models.ForeignKey(Post)
    content = models.CharField()

我创建了带有 all 字段的默认模型序列化器。

问题:

  1. 默认模型序列化程序不适用于嵌套模型。我必须明确地编写创建/更新。文档中已经对此进行了解释,因此没有任何不利之处。尽管我认为选择合理的默认设置可以满足99%的用例(对于其余用例,行为可以自定义)。我将尝试对此进行射击。

  2. 当我尝试使用现有post对象中的json时,序列化器is_valid()失败,提示“名称上的唯一约束失败”。但是我希望它更新而不是创建。应该基于在json中传递的ID来识别is_valid是否是创建/更新对象。

  3. 在创建带有许多注释的新嵌套json时,is_valid()无法说“帖子为空”。当然,我将在json中没有帖子ID,因为尚未创建帖子。因此is_valid变得无用。是否is_valid不取决于id是否在json中传递?另外,如果没有is_valid通行证,我将无法使用data / validated_data。

  4. 设置验证程序= []也不会删除字段验证。我尚未找到抑制字段验证的方法。

我遍历了源代码和文档,花了一天多的时间来设置如此简单的内容。

我必须缺少一些简单的东西,所以我们将不胜感激。

0 个答案:

没有答案