2010-03-29 25 views
3

今天我要瘋了。我只是試圖插入一條新記錄,並且拋出了「post_blogpost.id可能不是NULL」錯誤。這裏是我的模型:Django說「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

我正在通過管理員添加......而且我的頭髮不夠用了。

回答

6

我唯一能想到的是表模式已經從模型中去除了同步,因爲有人從表中刪除了AUTOINCREMENT屬性。

+0

我必須說,鑑於這是一個在我的代碼之外發生的錯誤,這完全有可能,但我該如何檢查是否是這種情況,以及如何解決它? – Oli 2010-03-29 15:19:58

+0

您可以使用數據庫工具檢查表的屬性,然後執行「ALTER TABLE」查詢重新添加約束。詳細信息請參閱相關的DB文檔。 – 2010-03-29 15:21:57

+0

我使用了一個有點危險的manage.py方法:'dumpdata post> post.json','reset post','loaddata post.json' ..仍然檢查以確保它沒有燒燬任何東西。 – Oli 2010-03-29 15:34:31

1

我在管理員中也遇到過奇怪的編輯結果。通常他們與外鍵有關。當編輯頁面在一個頁面上有一堆空的模型實例時,您可以通過填充它們來輕鬆創建新的模型實例,有時我設法做了一些錯誤的事情,以便嘗試保存空實例。也許這適用於你。

你可以驗證這在shell中自行增加。

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

與shell相同的錯誤=( – Oli 2010-03-29 15:19:13

相關問題