我将 django 与 mongoengine 和 mongoengine-rest-framework 一起使用。
如this article所示,在序列化程序的元类中指定 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 编写的,在当前版本中序列化程序元类中没有字段 related_model_validations
那么如何在当前版本的mongoengine-rest-framework中实现类似的结果?
答案 0 :(得分:0)
对不起,迟到的回应,阿列克谢。
目前,如果您希望PUT
或POST
发表评论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"
}
因此,如果您想同时更新Comment
,Post
和Author
,我担心,这是不可能的。
在GET
请求中,您可以将相关字段作为嵌套的子JSON与Serializer的非零depth
参数获取,就像您在示例中所做的那样。