在选择包含NULL的模型上,不允许将空字符串作为有效值

时间:2018-08-31 12:44:30

标签: python django django-models django-validation

我有以下模型:

class MyModel(models.Model):
    RED = 'red'
    BLUE = 'blue'
    EMPTY_COLOR = None
    COLORS  = (
        (EMPTY_COLOR, '---'),
        (RED, 'red'),
        (BLUE, 'blue'),
    )

    color = models.CharField(max_length=255, null=True, blank=True,
                             choices=COLORS, default=EMPTY_COLOR)

如果颜色设置为full_clean()(当然是蓝色/红色),我希望模型验证有效(在实例上使用None),但如果将颜色设置为空字符串。但是,很高兴地允许在模型上定义空字符串,并将空字符串保存在数据库中,即使在我看来,这些选择仅定义为NULL,“ red”或“ blue”。

我的假设不正确吗?在颜色为None的情况下,如何在使模型验证有效的同时不允许空字符串成为有效值?

1 个答案:

答案 0 :(得分:0)

尝试在颜色字段上删除blank = True

color = models.CharField(max_length=255, null=True,
                             choices=COLORS, default=EMPTY_COLOR)

或将其设置为blank = False