Django DRF StringRelatedField为空时不返回null问题求助
当前使用StringRelatedField关联category.name时,一旦category为null,该字段会被自动省略,需要让它固定返回null值。以下是两种可行的解决方案:
方案一:用SerializerMethodField自定义字段逻辑
通过自定义方法手动判断关联对象是否存在,返回对应值或null:
class TaskSerializer(serializers.ModelSerializer): category_name = serializers.SerializerMethodField() def get_category_name(self, obj): return obj.category.name if obj.category else None class Meta: model = Task fields = ['task_name', 'category', 'category_name']
方案二:用CharField替代StringRelatedField并开启allow_null
CharField支持allow_null=True参数,配合source可以更简洁地实现需求:
class TaskSerializer(serializers.ModelSerializer): category_name = serializers.CharField(source='category.name', allow_null=True, read_only=True) class Meta: model = Task fields = ['task_name', 'category', 'category_name']
修改后,当category为null时,返回结果会包含"category_name": null,完全符合期望格式。
内容的提问来源于stack exchange,提问作者Mark
相关产品推荐
相关产品推荐

