关于保存字段的Django管理员没有默认值

时间:2018-03-17 06:57:02

标签: mysql django

尝试在admin中保存对象但收到错误

  

Field' site_id'没有默认值

用户模型:

class User(AbstractUser):   
    address = models.CharField(max_length=128, blank=True)
    site = models.ForeignKey(Site, related_name='users', default=1)

评论模型:

class Review(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='reviews')
    title = models.CharField(max_length=128, verbose_name='Review Title')
    text = models.TextField(verbose_name='Your Review')

管理员:

@register(Review)
class ReviewAdmin(admin.ModelAdmin):
    pass

我用户Django == 1.6.11和MySQL == 5.7.14

1 个答案:

答案 0 :(得分:1)

这将有很多原因,

1。尝试在该表的主键中添加自动增量。

2. 在您对该表的查询中,尝试使用您的ID启动查询,例如,如果您要创建表,请尝试使用您的主键启动。

Check this link it may also help you

在基于Django和MySQL的项目上出现以下错误: “警告:字段'id'没有默认值”

起初,似乎Django负有责任。但是,快速谷歌搜索证明这是MySQL的一个问题。

搜索返回的一些解决方案要求程序员/管理员导出并重新创建数据库,但事实证明解决方案更加简单。对于名为auth_user的表,以下MySQL命令修复了上述错误消息:

ALTER TABLE auth_user MODIFY `id` INT(11) NOT NULL AUTO_INCREMENT;

上面的命令将auth_user表的ID字段重置为长度为11的自动递增整数,修复错误消息。