[英]IntegrityError - NOT NULL constraint failed in the `models.DecimalField`
我正在尝试构建一个models.DecimalField
,它将设置为50并且将具有一个范围(从50到9000 ),步长为 50 。 我已经读过我可以使用choices
: “一个由恰好两个项目的可迭代组成的序列(例如[(A,B),(A,B)...])用作该字段的选择。如果选择是给定,它们由 model 验证强制执行,默认表单小部件将是带有这些选项的 select 框,而不是标准文本字段。” .
我不知道如何解决它。 肯定错误在quantity = models.DecimalField
中。 我的代码:
from django.db import models
# Create your models here.
class ProductInquirie(models.Model):
email = models.CharField(null=False, blank=False, max_length=120) # max_lenght required
tittle = models.TextField(null=False, blank=False)
quantity = models.DecimalField(
null=True,
blank=True,
decimal_places=0,
max_digits=4,
default=50,
choices=[(i, i) for i in range(50, 9000, 50)]
)
target_price = models.DecimalField(null=False, blank=True, decimal_places=2, max_digits=7) # Why decimal not float: https://docs.python.org/3/library/decimal.html#module-decimal
one_time = models.TextField(default="client didn't provide information, or want constant supply")
constant_need = models.TextField(default="no information")
how_soon = models.TextField(default="no information")
错误是关于target_price
的,您的quantity
字段没有任何问题(现在)。
通过设置blank=True
,管理面板中不需要它。 但是,它是数据库中的必填字段,请参阅null=False
。 这就是产生错误的原因。
target_price = models.DecimalField(null=False, blank=True, decimal_places=2, max_digits=7)
只需在此字段中添加一些内容,它就会正常工作。
target_price = models.DecimalField(null=True, blank=True, decimal_places=2, max_digits=7)
此错误与您的quantity
字段无关。 只需更改您的target_price
字段,将其null
属性设置为True
,然后运行python manage.py makemigrations
和python manage.py migrate
命令。 这将删除您的NOT NULL 约束失败错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.