Django 如何删除或忽略serializer.py中的serializer.data对象?
我需要删除serializer中的serializer.data对象,因为我的表中有一些记录。但整个记录细节都存在于其他微服务中,一旦有人调用了我的api,我就需要调用该服务来获取数据。但是如果记录是空的,我需要忽略这个对象。我可以创建这个视图,但也可以在Serializer.py中创建。检查参考代码:Django 如何删除或忽略serializer.py中的serializer.data对象?,django,serialization,django-rest-framework,Django,Serialization,Django Rest Framework,我需要删除serializer中的serializer.data对象,因为我的表中有一些记录。但整个记录细节都存在于其他微服务中,一旦有人调用了我的api,我就需要调用该服务来获取数据。但是如果记录是空的,我需要忽略这个对象。我可以创建这个视图,但也可以在Serializer.py中创建。检查参考代码: class CourseSerializer(serializers.ModelSerializer): user = serializers.SerializerMethodField
class CourseSerializer(serializers.ModelSerializer):
user = serializers.SerializerMethodField()
def get_user(self, obj):
token = self.context['request'].META['HTTP_TOKEN']
username = get_user_details_from_id(str(obj['user']), token, name=1)
if username:
return username
else:
obj = {}
class Meta:
model = Course
fields = ('user', 'total_score')
我想忽略SerializerMethodfield中的记录,如果用户名为空则可以覆盖serializer中的
.to_表示方法
class CourseSerializer(serializers.ModelSerializer):
user = serializers.SerializerMethodField()
def get_user(self, obj):
token = self.context['request'].META['HTTP_TOKEN']
username = get_user_details_from_id(str(obj['user']), token, name=1)
if username:
return username
else:
obj = {}
class Meta:
model = Course
fields = ('user', 'total_score')
def to_representation(self, instance):
data = super(CourseSerializer, self).to_representation(instance)
if not data.get('username'):
data.pop('username', None)
return data
不是字段,而是整个对象。请检查问题,我刚刚用示例数据更新了。@sakthi panneerselvam您做到了吗?如果是这样,你能告诉我怎么做吗?@Hectorviv,没有。我现在是从视野里做的。
class CourseSerializer(serializers.ModelSerializer):
user = serializers.SerializerMethodField()
def get_user(self, obj):
token = self.context['request'].META['HTTP_TOKEN']
username = get_user_details_from_id(str(obj['user']), token, name=1)
if username:
return username
else:
obj = {}
class Meta:
model = Course
fields = ('user', 'total_score')
def to_representation(self, instance):
data = super(CourseSerializer, self).to_representation(instance)
if not data.get('username'):
data.pop('username', None)
return data