Проверка эталонного поля в сериализаторе 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, как вы сделали это в своем примере.

Другие вопросы по тегам