如何在Django REST框架中为所有ModelSerializer字段设置allow_null=True

py49o6xq  于 2022-11-18  发布在  Go
关注(0)|答案(1)|浏览(118)

我有一个ModelSerializer。我想为序列化器的所有字段设置allow_null=True。但我不想手动完成,我的意思是-我不想为每个字段都写allow_null=True。有什么捷径吗?有类似read_only_fields=()的东西吗?

这是我的序列化程式

class ProductPublicListSerializer(serializers.ModelSerializer):
    minimum_price = serializers.FloatField(source='min_product_price', allow_null=True)
    maximum_price = serializers.FloatField(source='max_product_price', allow_null=True)
    # rating = serializers.FloatField(source='productreview__rating', read_only=True)

    class Meta:
        model = Product
        fields = (
            'id', 'name', 'featured_image', 'minimum_price', 'maximum_price', 'total_review',                 'average_rating')
       read_only_fields = ('name', 'featured_image', 'minimum_price', 'total_review')
66bbxpm5

66bbxpm51#

我认为可以通过在ModelSerializer类中重写get_fields来实现它,因此:

class ProductPublicListSerializer(serializers.ModelSerializer):
    ...
    def get_fields(self):
        fields = dict(super().get_fields())
        for field_name, field_class in fields.items():
            field_class.allow_null = True
        return fields

相关问题