Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在django模型中指定整数选项有什么意义?_Python_Django - Fatal编程技术网

Python 在django模型中指定整数选项有什么意义?

Python 在django模型中指定整数选项有什么意义?,python,django,Python,Django,官方django文档给出了以下示例,用于为列指定整数选项: class Card(models.Model): class Suit(models.IntegerChoices): DIAMOND = 1 SPADE = 2 HEART = 3 CLUB = 4 suit = models.IntegerField(choices=Suit.choices) 但是,我发现如果打开“python manage.py shell”并简单地执行以下操作: c =

官方django文档给出了以下示例,用于为列指定整数选项:

class Card(models.Model):

class Suit(models.IntegerChoices):
    DIAMOND = 1
    SPADE = 2
    HEART = 3
    CLUB = 4

suit = models.IntegerField(choices=Suit.choices)
但是,我发现如果打开“python manage.py shell”并简单地执行以下操作:

c = Card()
c.suit = 5
c.save()

即使我的选择中没有包含5,它也可以毫无问题地保存卡。那么,指定我的整数选择的意义是什么呢?

提供选择的意义在于用户提供的数据验证。您的表单将不接受您定义的选项所包含的任何其他输入

作为一名开发人员,您可以自由放置任何您想要的数据,只要它符合您定义的数据库约束

您需要注意的是,在提供的示例中,您在保存模型之前没有对其进行验证。如果您这样做,它将触发一个异常

c = Card()
c.suit = 5
# Validation !
c.full_clean()
c.save()