Django Restful 框架模型序列化器获取验证排除项

2024-06-17 10:12:11 发布

您现在位置:Python中文网/ 问答频道 /正文

你好,这是我的第一个问题。我是初学者,我正在制作我的第一个在DRF中的API。我熟悉django的MVT(MDC)模型。 我的问题很简单,但是他们没有很好的文档来帮助DRF理解很多事情。 此序列化程序中get_validation_exclusions函数的用途是什么?你知道我在哪里可以找到关于DRF的非常详细的文档吗?在

class PostSerializer(serializers.ModelSerializer):
   author = UserSerializer(required=False)
   photos = serializers.HyperlinkedIdentityField('photos', view_name='postphoto-list')
   # author = serializers.HyperlinkedRelatedField(view_name='user-detail',       lookup_field='username')

def get_validation_exclusions(self):
    # Need to exclude `author` since we'll add that later based off the request
    exclusions = super(PostSerializer, self).get_validation_exclusions()
    return exclusions + ['author']

class Meta:
    model = Post

来源:http://blog.kevinastone.com/getting-started-with-django-rest-framework-and-angularjs.html#model-serializers


Tags: djangoname文档selfviewgetmodeldrf
2条回答

Django REST框架网站将成为DRF的最佳实际文档。但它并没有涵盖许多低级的方法,比如这一个。我最喜欢使用Python的一点是,大多数包都必须包含源代码。我总是发现源代码是最好的文档,也是向更有经验的开发人员学习的最佳方式。使用Sourcegraph这样的工具可能会使阅读该源代码更容易。在

对于这个特定的方法,它提供了一个不运行验证的字段列表。默认情况下,它返回序列化程序上标记为只读的字段列表。然后这个列表作为模型的排除kwarg而过去full_clean method。在

我通过如下更新get_validation_exclusions签名来修复它。DRF更新了最新版本的签名。在

def get_validation_exclusions(self, instance=None):
    # Need to exclude `user` since we'll add that later based off the request
    exclusions = super(PostSerializer, self).get_validation_exclusions(instance)
    return exclusions + ['author']

相关问题 更多 >