Django说“id可能不能为空”,但为什么呢?
今天我快要疯了。我刚试着插入一条新记录,结果出现了一个错误:“post_blogpost.id 不能为 NULL”。这是我的模型:
class BlogPost(models.Model):
title = models.CharField(max_length=100)
slug = models.SlugField(max_length=100)
who = models.ForeignKey(User, default=1)
when = models.DateTimeField()
intro = models.TextField(blank=True, null=True)
content = models.TextField(blank=True, null=True)
counter = models.PositiveIntegerField(default=0)
published = models.BooleanField(default=False)
css = models.TextField(blank=True, null=True)
class Meta:
ordering = ('-when', 'id')
模型下面还有一些函数,不过我这里就不全列出来了。它们的名字是:content_cache_key
、clear_cache
、__unicode__
、reads
、read
、processed_content
。
我是在后台添加的... 我快要抓狂了。
2 个回答
1
我也遇到过在管理后台编辑时出现奇怪的结果。通常这些问题和外键有关。当编辑页面上有很多空的模型实例时,你可以通过填写这些空实例来轻松创建新的。有时候我会搞错,导致系统试图保存这些空的实例。也许你遇到的情况和这个类似。
你可以在命令行中验证一下,这样添加是没问题的。
$ python manage.py shell
>>> from models import *
>>> b = BlogPost(title='Hello', slug='hello')
>>> b.save()
6
我能想到的唯一原因就是,表的结构和模型之间出现了不同步的情况,可能是因为有人把表中主键的AUTOINCREMENT
属性给删掉了。