【问题标题】:Validation of the reference field in mongoengine serializer验证 mongoengine 序列化程序中的引用字段
【发布时间】:2017-03-06 03:49:32
【问题描述】:

我将 djangomongoenginemongoengine-rest-framework 一起使用。

this article所示,在SerializerMeta class中指定related_model_validations字段

class Comment(Document):
    post = ReferenceField(Post)
    owner = ReferenceField(User)
    text = StringField(max_length=140)
    isApproved = BooleanField(default=False)



from rest_framework_mongoengine import mongoengine_serializer

class CommentSerializer(MongoEngineModelSerializer):
    class Meta:
        model = Comment
        depth = 1
        related_model_validations = {'owner': User, 'post': Post}
        exclude = ('isApproved',)

如果ReferenceField引用的文档丢失,可以帮助实现以下结果:

{
    "owner":["User with PK ... does not exist."]
}

所以不是引发验证异常,而是修改 json。

但是,这篇文章是为旧版本的 mongoengine-rest-framework 编写的,在当前版本中 Serializer Meta 类中没有字段 related_model_validations

那么如何在当前版本的mongoengine-rest-framework中达到类似的效果呢?

【问题讨论】:

    标签: django serialization mongoengine restframeworkmongoengine


    【解决方案1】:

    抱歉,Aleksei 回复晚了。

    目前,如果您想 PUTPOST 评论 JSON,您只需传递现有所有者并以他们的 ids 的身份发布:

    {
        post: 2,
        user: aleksei.rozhnov@stackoverflow.com,
        text: "Contrary to the popular belief, Karl Marx and Friedrich Engels are not a couple, but four different people"
    } 
    

    所以,如果您想同时更新CommentPostAuthor,恐怕这是不可能的。

    GET 请求中,您可以将相关字段作为嵌套的子JSON,并将非零depth 参数传递给序列化程序,就像您在示例中所做的那样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-20
      • 2014-11-25
      • 2019-02-19
      • 2018-10-06
      • 1970-01-01
      • 2017-11-12
      • 1970-01-01
      • 2017-11-09
      相关资源
      最近更新 更多