如何在django模型中的字段中保存单个空格(“”)?

时间:2018-01-09 21:30:19

标签: python django django-models django-rest-framework

我的模型定义如下:

class MyModel(models.Model):
    tag_separator = models.CharField(max_length=1, null=True, blank=True)

tag_separator是单个字符,可以是单个空格:" " 我需要选择null=True才能使其正常工作,但是当我通过REST API发布数据时,它会将tag_separator保存为空字符串:"tag_separator": ""

有没有一种简单的方法可以阻止Django假设我的单个空格字符串是一个空字符串?

我正在使用:Django==1.11djangorestframework==3.7.7

2 个答案:

答案 0 :(得分:1)

我解决了这个问题:

import itertools
a=[[1,2],[3,4],[7,10]]
b=[[8,6],[1,9],[2,1],[8,8]]
result = sum(sum(c*d for c, d in zip(h, k)) for h, k in itertools.product(a, b))

然后在我的模型中:

class NonStrippingCharField(models.CharField):
    def formfield(self, **kwargs):
        kwargs['strip'] = False
        return super(NonStrippingCharField, self).formfield(**kwargs)

答案 1 :(得分:0)

在您的序列化程序中,将trim_whitespace=False传递到您的CharField。即:

class MyModelSerializer(serializers.ModelSerializer):
    tag_separator = serializers.CharField(trim_whitespace=False)

    class Meta:
        model = MyModel

同样,当您使用django的表单时,请使用strip=False

class MyModelForm(forms.ModelForm):
    tag_separator = forms.CharField(strip=False)

    class Meta:
        model = MyModel