You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django DRF StringRelatedField为空时不返回null问题求助

解决Django REST Framework中关联值为null时StringRelatedField不返回字段的问题

当前使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 07:59:58