Python 在Django REST控件中,序列化程序不会自动删除空格?;
model.pyPython 在Django REST控件中,序列化程序不会自动删除空格?;,python,django,django-models,django-rest-framework,django-serializer,Python,Django,Django Models,Django Rest Framework,Django Serializer,model.py class Msg(models.Model): content = models.CharField(max_length=1024, null=True) 序列化程序.py class MessageSerializer(serializers.ModelSerializer): class Meta: model = Msg fields = ["content"] 有数据: {"content": " space
class Msg(models.Model):
content = models.CharField(max_length=1024, null=True)
序列化程序.py
class MessageSerializer(serializers.ModelSerializer):
class Meta:
model = Msg
fields = ["content"]
有数据:
{"content": " space test "}
及
第一个印刷品是
{'content':'spacetest'}
第二个印刷品是
{'content':'spacetest'}
因此数据库中的空格消失了。如何保留空格?您可以通过从以下位置实现方法来自定义该字段的输出:
trim_whitespace
-如果设置为True,则会修剪前导和尾随空格。默认为True
因此,您需要自己将此标志传递给序列化程序字段,并将其设置为False
:
class MessageSerializer(serializers.ModelSerializer):
content = serializers.CharField(trim_whitespace=False, max_length=1024)
class Meta:
model = Msg
fields = ["content"]
或更好地通过:
第二个变体更好,因为DRF仍然可以正确地从模型中提取其他属性。您可以使用django rest framework序列化程序中提供的trim_whitespace选项
class MessageSerializer(serializers.ModelSerializer):
content = serializers.CharField(max_length=1024, trim_whitespace=True)
class Meta:
model = Msg
fields = ["content"]
请去掉所有的背面记号
class MessageSerializer(serializers.ModelSerializer):
class Meta:
model = Msg
fields = ["content"]
extra_kwargs = {"content": {"trim_whitespace": False}}
class MessageSerializer(serializers.ModelSerializer):
content = serializers.CharField(max_length=1024, trim_whitespace=True)
class Meta:
model = Msg
fields = ["content"]