【问题标题】:django not nullable error on model field containing null-True包含 null-True 的模型字段上的 django 不可为空错误
【发布时间】:2015-11-09 09:11:29
【问题描述】:

所以我有一个用户可以在效果上发布 cmets,我将我的模型链接起来,无论我尝试什么,我都会不断收到不可为空的错误。每个人都说它需要 null=True。它不工作大声笑。我在这里没有看到什么?

这是官方错误:

django.db.utils.IntegrityError: NOT NULL constraint failed: effect_modules_comment__new.author_id

还有我的模特:

class Effect_module(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
    title = models.CharField(max_length=255)
    description = models.TextField()
    html = models.TextField(default='')
    css = models.TextField(default='')
    js = models.TextField(default='')
    up_votes = models.IntegerField()
    down_votes = models.IntegerField()
    effect_author = models.ManyToManyField('UserProfile')

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    effects = models.ManyToManyField(Effect_module)

class Comment(models.Model):
    comment_author = models.ForeignKey(User, null=True)
    comment = models.TextField(default='No Comment Here')
    effect_object = models.ForeignKey(Effect_module)

【问题讨论】:

  • 尝试包含blank=True
  • 我添加了 blank=True 并且在 makemigrations 期间,它要求我提供默认值,我应该添加什么?它不允许我输入 null=True 或任何东西,所以我只是使用了建议的 timezone.now() 大声笑,现在它仍然在迁移时说可以为空的错误
  • 您是否在 Comment 模型本身之后添加了外键?你的数据库中已经有 cmets 了吗?
  • 是的,我做到了...我有一种感觉,我只是把迁移和其他东西搞砸了,所以我只是清除了数据库..无论如何它只是虚拟数据

标签: django database database-design django-models models


【解决方案1】:

删除所有迁移脚本。添加null=True表示在数据库中可以为NULL,blank=True表示在表单中可以留空。

然后

python manage.py makemigrations
python manage.py migrate

【讨论】:

    猜你喜欢
    • 2011-04-23
    • 2016-05-22
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    • 2012-02-03
    相关资源
    最近更新 更多