非空约束失败 - null = True已设置

时间:2018-05-03 07:53:13

标签: python django python-3.x django-models

我正在更改我的寄存器模型,以便有一个引用某个位置的外键。我想要达到的目的是建立一个关系,其中Register模型可以有0到多个位置。

最初我设置了一个很多字段,我意识到这是一个错误,因为它为每个寄存器提供了所有存在的位置。我只想要每个寄存器的子集。

我的模型现在看起来像:

class Register(AbstractBaseUser, models.Model):
    username = models.CharField(max_length=20,default='',blank=True)
    password = models.CharField(max_length=80,default='',blank=True)
    email = models.CharField(max_length=255,default='',blank=True)
    #Added 2nd May
    #locations = models.ManyToManyField(Location)
    #3rd May change to foreign key
    locations = models.ForeignKey(Location,on_delete=models.CASCADE, blank=True, null=True, default='')

    USERNAME_FIELD = 'username'

引用的模型是:

class Location(models.Model):
    locationname = models.CharField(max_length=80,default='',blank=True)
    address = models.ForeignKey(Address, on_delete=models.CASCADE)
    geolocation = models.ForeignKey(GeoLocation, on_delete=models.CASCADE, default='')

当我尝试迁移时,我收到以下错误。我已经运行了makemigrations,如果我再次运行它会声明没有变化。

“NOT NULL约束失败:register_register.locations_id”

我一直在搜索其他帖子,它建议添加我添加的null = True参数,但我仍然会收到此错误。我找不到任何已完成此事的帖子,但仍然会出现此错误。

1 个答案:

答案 0 :(得分:0)

使用manage.py flush从数据库中清除数据允许我重新迁移项目。

我意识到我在关系中犯了一个错误并且将外键放在错误的桌子上,它需要在位置上,因此这基本上就是问题。