【问题标题】:How to allow null in all column in django model with postgres?如何使用postgres在django模型的所有列中允许null?
【发布时间】:2015-09-12 15:16:29
【问题描述】:

我想让我的模型中的所有列都可以为空,当我尝试插入数据时出现以下错误。

invalid literal for int() with base 10: ''

这是我的型号代码:

class Edu_Expense(models.Model):
    uin = models.ForeignKey(Claim)
    child_id = models.ForeignKey(Child_Info)
    edu_receipt = models.CharField(max_length=10,null=True,blank=True)
    edu_fees = models.IntegerField(null=True,blank=True)
    edu_date = models.DateField(default=None,null=True,blank=True)
    entry_receipt = models.CharField(max_length=10,null=True,blank=True)
    entry_fees = models.IntegerField(null=True,blank=True)
    entry_date = models.DateField(default=None,null=True,blank=True)
    lab_receipt = models.CharField(max_length=10,null=True,blank=True)
    lab_fees = models.IntegerField(null=True,blank=True)
    lab_date = models.DateField(default=None,null=True,blank=True)
    other_receipt = models.CharField(max_length=10,null=True,blank=True)
    other_fees = models.IntegerField(null=True,blank=True)
    other_date = models.DateField(default=None,null=True,blank=True)
    prac_receipt = models.CharField(max_length=10,null=True,blank=True)
    prac_fees = models.IntegerField(null=True,blank=True)
    prac_date = models.DateField(default=None,null=True,blank=True)
    instru_receipt = models.CharField(max_length=10,null=True,blank=True)
    instru_fees = models.IntegerField(null=True,blank=True)
    instru_date = models.DateField(default=None,null=True,blank=    True)
    lib_receipt = models.CharField(max_length=10,null=True,blank=True)
    lib_fees = models.IntegerField(null=True,blank=True)
    lib_date = models.DateField(default=None,null=True,blank=True)
    sport_receipt = models.CharField(max_length=10,null=True,blank=True)
    sport_fees = models.IntegerField(null=True,blank=True)
    sport_date = models.DateField(default=None,null=True,blank=True)
    coedu_receipt = models.CharField(max_length=10,null=True,blank=True)
    coedu_fees = models.IntegerField(null=True,blank=True)
    coedu_date = models.DateField(default=None,null=True,blank=True)
    board_receipt = models.CharField(max_length=10,null=True,blank=True)
    board_fees = models.IntegerField(null=True,blank=True)
    board_date = models.DateField(default=None,null=True,blank=True)
    books_receipt = models.CharField(max_length=10,null=True,blank=True)
    books_fees = models.IntegerField(null=True,blank=True)
    books_date = models.DateField(default=None,null=True,blank=True)
    notebook_receipt = models.CharField(max_length=10,null=True,blank=True)
    notebook_fees = models.IntegerField(null=True,blank=True)
    notebook_date = models.DateField(default=None,null=True,blank=True)
    uniform_receipt = models.CharField(max_length=10,null=True,blank=True)
    uniform_fees = models.IntegerField(null=True,blank=True)
    uniform_date = models.DateField(default=None,null=True,blank=True)
    shoes_receipt = models.CharField(max_length=10,null=True,blank=True)
    shoes_fees = models.IntegerField(null=True,blank=True)
    shoes_date = models.DateField(default=None,null=True,blank=True)
    vvn_receipt = models.CharField(max_length=10,null=True,blank=True)
    vvn_fees = models.IntegerField(null=True,blank=True,)
    vvn_date = models.DateField(default=None,null=True,blank=True)
    claimed_date = models.DateField(default=None,blank=True,null=True)
    tot_claim_fees = models.IntegerField(null=True,blank=True)
    status = models.CharField(max_length=10,null=True,blank=True)

这是我的模型。任何帮助将不胜感激。

【问题讨论】:

  • 发布完整的回溯。您的错误可能与 NULL / NOT NULL 无关。
  • exp = Edu_Expense(edu_receipt = edu_receipt, edu_fees = edu_fees, edu_date = edu_date, entry_receipt = entry_receipt, entry_fees = entry_fees, entry_date = entry_date, lab_receipt = lab_receipt, lab_fees = lab_fees, lab_date = lab_date, other_receipt other_receipt,other_fees = other_fees,other_date = other_date,prac_receipt = prac_receipt,prac_fees = prac_fees,prac_date = prac_date,instru_receipt = instru_receipt,instru_fees = instru_fees,instru_date = instru_date,lib_receipt = lib_receipt,lib_fees = lib_fees,lib_date = lib_date,sport_receipt = sport_receipt
  • 我在想这个:模型有一个 Django 自动添加的“ID”字段,并且该 ID 字段不能为空,至少如果你'尚未指定用于唯一索引的替代字段。
  • 但是维护外键约束对我们很重要
  • 它在日期字段中的问题,如何在那里允许null?

标签: django postgresql django-models django-views


【解决方案1】:

您可以在 python 控制台中通过输入复制此错误:

int('')
> ValueError: invalid literal for int() with base 10: ''

因此,有了这些新发现的知识,我们可以进一步诊断您的问题。

我猜你在你的应用程序中使用了一个模型表单(可能带有验证),这意味着当你提交表单时,django 正在传递一个空字符串''。此时IntegerField 的值没有被定义为null/None,而是'' 被传递给无法将其转换为整数的模型。

因此您会看到错误消息:

ValueError: invalid literal for int() with base 10: ''

如果您在表单周围显示您的代码,我们可能会提供进一步的帮助。

【讨论】:

    猜你喜欢
    • 2014-06-13
    • 2015-09-12
    • 2020-08-01
    • 2020-03-21
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多