2014-07-19 32 views
0

雖然我救用戶配置到數據庫中,表UserAndPlace_userprofile沒有指定的列性別

有一個錯誤「用戶配置沒有指定的列性別錯誤」。

這裏是我的models.py

""" UserProfile : user information """ 
class UserProfile(models.Model): 
    # User basic inherits : username, password, email 
    user = models.OneToOneField(User) 
    # Profile information 
    nickname = models.CharField(max_length=63, unique=True, null=False) 
    url = models.URLField(blank=True, null=True) 
    birth = models.DateField(null=True) # TODO change null = false 
    gender = models.CharField(max_length=15, null=False) 
    nation = models.CharField(max_length=63, null=True) 
    region = models.CharField(max_length=63, null=True) 
    description = models.TextField(blank=True, null=True) 
    # ImageField: http://goo.gl/ZQEG4e 
    avatar = models.ImageField(upload_to='/avatar/') 
    # Foreign Keys 
    tag = models.ManyToManyField(TagCloud) 

,雖然我測試了它從./python的models.py殼我輸入

> from UserAndPlace.models import * 
> u1 = User.objects.get(username="user1") 
> u1.username 
    u'user1' 
> p1 = UserProfile(user=u1, gender="female") 
> p1.user.username 
    u'user1' 
> p1.gender 
    u'female' 
> p1.save() 


OperationalError       Traceback (most recent call last) 
<ipython-input-9-e08e160cd285> in <module>() 
----> 1 p1.save() 
.... 
OperationalError: table UserAndPlace_userprofile has no column named gender 

我做蟒蛇manage.py執行syncdb並用來檢查錯誤python manage.py sql UserAndPlace

我該如何解決這個錯誤?

感謝您的幫助提前。

回答

1

syncdb如果列已存在於數據庫中,則不會創建或修改列。如果您已經擁有該模型,然後添加了性別列,則運行syncdb將不會執行任何操作。

您需要刪除表並重新創建它。如果您使用的是sqlite,只需刪除數據庫文件並運行syncdb即可。

如果您在使用其他數據庫,運行manage.py sqlclear yourapp這會給你你需要執行重置表的應用yourapp(請確保您有輪廓模型的應用程序的名稱替換yourapp)的SQL 。

然後,再次運行syncdb重新創建模型。

+0

我已經使用'sqlclear'刪除了我的表,但發生了相同的錯誤。我還有什麼,先生? – Sogo

+1

只要輸入它就不會清除它,你需要執行它。嘗試'python manage.py dbshel​​l

+0

我懂了!有用!謝謝先生! – Sogo

0

在對模型做出任何更改後,你做了python manage.py syncdb嗎?當模型和數據庫不同步時,通常會發生此錯誤。