1

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

如本文所示,在Serializer的Meta 类中指定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 class中没有字段related_model_validations

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

4

1 回答 1

0

抱歉,Aleksei 回复晚了。

目前,如果您想PUTPOST评论 JSON,您只需传递现有所有者并像他们id一样发布:

{
    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"
} 

所以,如果你想更新CommentPost同时Author,恐怕这是不可能的。

GET请求中,您可以将相关字段作为具有非零depth参数的嵌套子 JSON 获取到 Serializer,就像您在示例中所做的那样。

于 2017-03-16T15:46:38.380 回答