我需要一些帮助,我已经在中使用ModelSerializer
过DRF
,这是问题所在:
我想动态生成响应,这意味着我决定用户的输入,因此我需要将request参数传递给ModelSerializer
,然后确定是否建立了我的条件,生成字段,否则生成其他字段。
像这样的东西:
class AlbumSerializer(serializers.ModelSerializer):
class Meta:
model = Album
if request.SOME_CONDITION:
fields = ('id', 'name_fa', 'name_en', 'price')
else:
fields = ('description', 'image_path_absolute', 'publisher')
我已经搜索过并且可以将参数使用传递context
给序列化器,但是在序列化器中,我需要通过self
对象获取参数。
我怎样才能做到这一点?
耶
我找到了。
我们需要重写__init__()
序列化器类的方法,然后使用上下文获取参数,排除不需要的字段,最后调用超类。
def __init__(self, *args, **kwargs):
if 'context' in kwargs:
context = kwargs.get('context')
if 'user' in context:
if SOME_CONDITION:
super(AlbumSerializer, self).__init__(*args, **kwargs)
self.fields.pop(key)
pass
super(AlbumSerializer, self).__init__(*args, **kwargs)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句