外键字段引发错误中的默认值0

时间:2012-12-15 04:24:41

标签: python django django-models

我在Django模型的外键字段中将默认值设置为0。但它提出了IntigrityError(1048,“Column'country_id'不能为空”)

嗨,我的代码如下:

class TestModel(models):
    name = models.CharField(max_length=255, blank=True)
    reg_from = models.CharField(max_length=255, blank=True)
    gender = models.CharField(max_length=1, choices=GENDER_CHOICES, blank=True, null=True)
    country = models.ForeignKey(Country, blank=True, default=0)

出于某种原因,在保存TestModel时,我无法提供国家/地区信息。我想稍后更新。

Krish

4 个答案:

答案 0 :(得分:1)

由于您的国家/地区模型中没有PK = 0的对象,因此引发错误。

如果您不想将字段设置为null,则只需使用pk=0创建一个国家/地区对象,例如:Country.objects.create(name='No Country', pk=0)

虽然将字段设置为null并拥有default=0可能是一个更清晰的解决方案。

答案 1 :(得分:0)

尝试None而不是0. 0是一个整数,它无论如何都不应该工作。

答案 2 :(得分:0)

我将字段null作为快速而肮脏的解决方案。

答案 3 :(得分:-1)

将您的定义更改为:

country = models.ForeignKey(Country, blank=True, null=True, default=0)

null=True属性将在数据库中的country列上设置NULL参数,而不应该为此列设置值。

此外,default=0也不是必需的,因为默认值为null。