2 回答
TA贡献1854条经验 获得超8个赞
您好,这是我的解决方案,用于确定我们是否处于 Many=True 的上下文中:我重写新的类方法并向上下文 kwargs 对象添加一个“has_many”键:
class MySerializer(serializer.ModelSerializer):
def __new__(cls, *args, **kwargs):
if kwargs.get('many', False) is True:
context = kwargs.get('context', {})
context.update({'has_many': True})
kwargs.update({'context': context})
return super().__new__(cls, *args, **kwargs)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if self.context.get('has_many', False):
# Do something
TA贡献1804条经验 获得超3个赞
从序列化器中动态删除字段的一种简单方法是将以下代码添加到序列化器中:
class MySerializer(serializer.ModelSerializer):
def __init__(self, *args, **kwargs):
remove_fields = kwargs.pop('remove_fields', None)
super(MySerializer, self).__init__(*args, **kwargs)
if remove_fields:
# for multiple fields in a list
for field_name in remove_fields:
self.fields.pop(field_name, None)
然后,当您需要从序列化器中删除某些字段时,请使用它将从输出数据中MySerializer(objects, many=True, remove_fields=['list_of_your_fields',])删除' 字段list_of_your_fields
添加回答
举报