2015-12-10 62 views
1

我想創建一個彩票應用程序,它已經工作正常,但今天當我試圖做一個python manage.py遷移lotteryapp它開始生產,其中指出Django的遷移產生奇怪的錯誤

django.db.utils.OperationalError: (1060, "Duplicate column name 'email'") 

錯誤所以我刪除了電子郵件的所有參考資料,看看是否能解決這個問題,但它仍然會給出錯誤。然後我刪除了數據庫中的所有在一起,重新開始,但隨後給了這個錯誤

ValueError: invalid literal for int() with base 10: '' 

我已經在我的models.py文件,並回去了,並再次運行該命令並再次給出了重複的列錯誤。這沒有任何意義。這裏是我的代碼models.py:

from django.db import models 
from django.utils import timezone 
from datetime import datetime 

class Lottery(models.Model): 
    name = models.CharField(default="", max_length=50) 
    date_drawn = models.DateTimeField(default=datetime.now,blank=True) 
    win_amount = models.IntegerField(default=0) 
    winning_numbers = models.IntegerField(default="") 
    def __unicode__(self): 
     return self.name 

class Winner(models.Model): 
    first_name = models.CharField(max_length=100, default="") 
    last_name = models.CharField(max_length=100, default="") 
    winner_telephone = models.IntegerField(max_length=15, default="") 
    lottery_numbers = models.IntegerField(default=0) 
    lottery_won = models.CharField(max_length=50, default="") 
    def __unicode__(self): 
     return self.name 

class User(models.Model): 
    first_name = models.CharField(max_length=100, default="") 
    last_name = models.CharField(max_length=100, default="") 
    telephone = models.IntegerField(default="") 
    def __unicode__(self): 
     return self.first_name 

class entered_user(models.Model): 
    first_name = models.CharField(max_length=100, default="") 
    last_name = models.CharField(max_length=100, default="") 
    telephone = models.IntegerField(default="") 
    lottery_numbers = models.IntegerField(default="") 
    def __unicode__(self): 
     return self.first_name 
+0

我現在已經從刪除的列電子郵件(我不知道爲什麼或如何在那裏)和我已經跑了遷移再次,我現在得到ValueError:無效文字爲int()與基10:''錯誤再次。此外,無論何時我做python manage.py makemigrations lotteryapp,它都會在數據庫的entered_user表中添加一個電子郵件列,儘管他們沒有參考models.py中的電子郵件 – CNB

+0

我現在已經將它設置爲工作狀態,但我沒有找到問題的原因。我必須完全刪除數據庫和entered_user模型,並刪除所有遷移並重新啓動它。 – CNB

回答

1

的問題是與領域lottery_wonlottery_numbers。將默認值更改爲0,然後重試。

+0

謝謝,但它仍然給出了相同的錯誤 – CNB

+0

您是否更改了勝利人數,winner_telephone,電話和相關領域。如果我們嘗試將字符串轉換爲整數,則會出現「ValueError:int()」基數爲10的無效字面值:'''。如果有任何遷移創建刪除並重試 –

+0

我現在修復它,我認爲我的數據庫和遷移有問題,所以我刪除了兩個,並再次啓動數據庫。感謝您的幫助 – CNB

0
  1. IntegerField不能有默認字符串類型,也沒有屬性MAX_LENGTH

    • winning_numbers = models.IntegerField(默認值= 「」)
    • winner_telephone =模型。 IntegerField(max_length = 15,default =「」)
    • telephone = models.IntegerField(default =「」)
    • lottery_numbers = models.IntegerField(默認值=「」)
  2. 避免調用模型的用戶,因爲它可能會導致衝突與默認的Django 用戶型號並且可以爲電子郵件錯誤信息的原因。

@CNB 我試過如下我只是改變了用戶的usermodel代碼和遷移工作正常:

from __future__ import unicode_literals 
from django.db import models 
from django.db import models 
from django.utils import timezone 
from datetime import datetime 

class Lottery(models.Model): 
    name = models.CharField(default="", max_length=50) 
    date_drawn = models.DateTimeField(default=datetime.now,blank=True) 
    win_amount = models.IntegerField(default=0) 
    winning_numbers = models.IntegerField(default=0) 
    def __unicode__(self): 
     return self.name 

class Winner(models.Model): 
    first_name = models.CharField(max_length=100, default="") 
    last_name = models.CharField(max_length=100, default="") 
    winner_telephone = models.IntegerField(default="") 
    lottery_numbers = models.IntegerField(default=0) 
    lottery_won = models.CharField(max_length=50, default="") 
    def __unicode__(self): 
     return self.name 

class UserModel(models.Model): 
    first_name = models.CharField(max_length=100, default="") 
    last_name = models.CharField(max_length=100, default="") 
    telephone = models.IntegerField(default=0) 
    def __unicode__(self): 
     return self.first_name 

class entered_user(models.Model): 
    first_name = models.CharField(max_length=100, default="") 
    last_name = models.CharField(max_length=100, default="") 
    telephone = models.IntegerField(default=0) 
    lottery_numbers = models.IntegerField(default=0) 
    def __unicode__(self): 
     return self.first_name 
+0

我現在已經將default =「」移除爲默認值= 0,而用戶現在是Lottery_User,但我仍然有同樣的問題。這是非常煩人的,因爲我運行遷移並獲得無效的文字錯誤,然後再次運行它,我得到重複的列錯誤。我的模型文件中沒有任何電子郵件,因此它如何添加它? – CNB

+0

正如我所提到的,嘗試通過__Profile__或任何其他名稱來更改__User__模型,因爲我認爲它正在與具有電子郵件字段的django默認用戶模型衝突。 刪除您的數據庫,然後重試。 – DhiaTN

+0

我在前面的評論中提到我已經完成了這項工作,並且我也刪除了數據庫 – CNB