代码之家  ›  专栏  ›  技术社区  ›  Oli

Django说“id可能不是空的”,但为什么呢?

  •  3
  • Oli  · 技术社区  · 14 年前

    我今天疯了。我刚尝试插入一个新记录,但它返回了一个“post-blogpost.id may not be 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 回复  |  直到 14 年前
        1
  •  6
  •   Ignacio Vazquez-Abrams    14 年前

    我唯一能想到的是,表模式已经从模型中取消同步,因为有人删除了 AUTOINCREMENT 来自表的pk的属性。

        2
  •  1
  •   Alexander Ljungberg    14 年前

    我也曾在管理员中遇到过奇怪的编辑结果。通常它们与外国钥匙有关。当编辑页面在一个页面上有一堆空的模型实例,这样您就可以通过填充它们来轻松地创建新的模型实例时,有时我会设法做一些错误的事情,以便尝试保存空的实例。也许这对你适用。

    您可以在shell中验证这是否本身就可以添加罚款。

    $ python manage.py shell
    >>> from models import *
    >>> b = BlogPost(title='Hello', slug='hello')
    >>> b.save()