Reputation: 37
I am trying to create a lottery app and it has been working fine but today when I tried to do a python manage.py migrate lotteryapp it started producing an error which stated
django.db.utils.OperationalError: (1060, "Duplicate column name 'email'")
So I deleted all references of email to see if that would fix it but it still gives the error. I then deleted the database all together and started again but then it gave this error
ValueError: invalid literal for int() with base 10: ''
I have gone in to my models.py file and gone back out and ran the command again and it gives the duplicate column error again. It doesn't make any sense. Here is my code from 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
Upvotes: 1
Views: 455
Reputation: 10619
IntegerField can't have default string type and also has no attribute max_length :
Avoid calling your model User because it may cause conflict with the default django User Model and which may be the reason of email error message.
@CNB I tried the code as follow I just changed The User to UserModel and the migration works fine:
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
Upvotes: 0
Reputation: 918
The issue is with fields lottery_won
and lottery_numbers
. Change the default to 0 and try again.
Upvotes: 1