Проверка эталонного поля в сериализаторе mongoengine
Я использую django с mongoengine и mongoengine-rest-framework.
Как показано в этой статье, указание поля 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 нет поля related_model_validations.
Так как же добиться подобного результата в текущей версии mongoengine-rest-framework?
1 ответ
Извините за поздний ответ, Алексей.
В настоящее время, если вы хотите PUT
или же POST
комментарий JSON, вы просто передаете существующего владельца и публикуете его id
это как:
{
post: 2,
user: aleksei.rozhnov@stackru.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 с ненулевым depth
аргумент для Serializer, как вы сделали это в своем примере.