首页 > 解决方案 > django rest框架默认字段验证的问题

问题描述

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

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

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

我创建了所有字段的默认模型序列化程序。

问题:

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

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

  3. 当创建一个包含许多评论的新嵌套 json 时,is_valid() 无法说“帖子为空”。当然,我不会在 json 中包含帖子 ID,因为尚未创建帖子。所以 is_valid 变得没用了。is_valid 是否应该不依赖于 id 是否在 json 中传递?另外,如果没有 is_valid 通行证,我不能使用 data/validated_data 。

  4. 设置验证器 = [] 也不会删除字段验证。我还没有找到抑制字段验证的方法。

我浏览了源代码和文档,花了一天多的时间来设置这么简单的东西。

我一定错过了一些简单的东西,所以任何帮助表示赞赏。

标签: djangorestdjango-rest-framework

解决方案


推荐阅读