繁体   English   中英

IntegrityError - NOT NULL 约束在“models.DecimalField”中失败

[英]IntegrityError - NOT NULL constraint failed in the `models.DecimalField`

我正在尝试构建一个models.DecimalField ,它将设置为50并且将具有一个范围(从509000 ),步长为 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")

错误: NOT NULL 约束失败

预期行为:它应该如下所示: 默认设置

展开,像这样: 在此处输入图像描述 ...但是,保存时没有错误(直到现在按下“保存”按钮时出现错误):)

错误是关于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 makemigrationspython manage.py migrate命令。 这将删除您的NOT NULL 约束失败错误。

答案已经有了,但我想补充一些提示,以避免将来出现类似问题。 我刚刚找到了关于何时使用null并在每种情况下为blank的出色图表。 图表来自“Two Scoops of Django”一书:

在此处输入图像描述

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM