2014-12-05 77 views
1

我試圖創建一個名爲'store'的django應用程序,但是當我執行./manage.py makemigration store,然後./manage.py migrate store遷移在phpmyadmin中查看此表時正確應用,它只有一個字段。Django遷移創建只有一個字段的表

我的模型代碼如下:

from django.db import models 

class Module(models.Model): 
    class Meta: 
     verbose_name = "Module" 
     verbose_name_plural = "Modules" 

    def __unicode__(self): 
     return self.name 

    def __str__(self): 
     return self.name 

    name = models.CharField(max_length=100, required=True) 
    version = models.CharField(max_length=10,default='0.1') 
    description = models.CharField(max_length=500,default="No description") 

./manage.py sqlmigrate store結果是:

BEGIN; 
CREATE TABLE `store_module` (`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY); 

COMMIT; 

我關於Python 2.7和MySQL數據庫的Django 1.7使用。

+0

朋友,好像字段聲明不是你模型的一部分。檢查你的身份。如果它仍然不起作用,請附上你正在使用的IDE模型類的截圖....謝謝 – 2014-12-05 18:03:45

+0

if你的意思是我在寫這個問題時手動修復了它的縮進,謝謝你通知我。 或你的意思是宣佈他們: 'self.name = CharField()' ??請解釋。 – 2014-12-05 18:06:43

+0

在這裏看看代碼似乎絕對fine.But仍然(糾正我,如果我錯了)看起來你的領域不是模型class.and的一部分,這就是爲什麼Django不把他們在migrations.It可能是其中一個原因但如果仍然不友好地附上你的模型類的截圖。 – 2014-12-05 18:10:19

回答

0

我找到了答案多次試驗後,該問題是:

You are trying to add a non-nullable field 'name' to module without a default; we can't do that (the database needs something to populate existing rows). 
Please select a fix: 
1) Provide a one-off default now (will be set on all existing rows) 
2) Quit, and let me add a default in models.py 
Select an option: 

,所以我說默認參數爲空字符串和 解決。

0

名稱= models.CharField(MAX_LENGTH = 100,需要=真)

正如我可以看到,這字段是一個模型字段,而不是一個表單字段。所以,需要= True在這種情況下不起作用。相反,使用下面的文檔中指定的blank = false。

You should use this

希望這可以issue.Please讓我知道在評論任何其他解釋的可能性。

+0

不幸的是,結果相同。 python本身允許關鍵字參數。在這旁邊不是解釋者問題。 – 2014-12-06 14:28:15