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



我有一个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')

我认为你可以通过在你的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

最新更新