Django (Python): DatabaseError: x Tabel heeft geen kolom met de naam y

Hallo, ik ben bezig met een django python-applicatie met behulp van SQLLITE3 database. Ik heb een extensie voor het gebruikersmodel van django zoals gedefinieerd in mijn models.py als volgt:

#Account Model
class Account(models.Model):
  user = models.OneToOneField(User)
  avatar_url = models.CharField(max_length=200)
  profile_url = models.CharField(max_length=200)
  account_type = models.CharField(max_length=60, choices=choices.ACCOUNT_TYPE)

Ik heb ook een methode om het Account-object en een post_save -handler als volgt te maken:

#Function to Create user Account/Profile
def create_user_account(sender, instance, created, **kwargs):
  if created:
    models.Account.objects.create(user=instance)

#Create User/User Registration
def UserRegistration(request):
  if request.method == 'POST':
    username = request.POST['fn'].capitalize() + ' ' + request.POST['ln'].capitalize()
    # CREATE USER
    newuser = User.objects.create_user(username=username,
                                       email=request.POST['email'],
                                       password=request.POST['pw'])
    newuser.save()
  return HttpResponse(username)

#Post Save handler to create user Account/Profile
post_save.connect(create_user_account, sender=User)

Wanneer ik een nieuwe gebruiker probeer te registreren, krijg ik de volgende databasefout:

DatabaseError at /register/

table engine_account has no column named user_id

Request Method:     POST
Request URL:    http://localhost:8000/register/
Django Version:     1.4
Exception Type:     DatabaseError
Exception Value:    

table engine_account has no column named user_id

Exception Location:     /usr/local/lib/python2.7/dist-packages/Django-1.4-py2.7.egg/django/db/backends/sqlite3/base.py in execute, line 337
Python Executable:  /usr/bin/python
Python Version:     2.7.3

en ik heb geen idee waar dat "user_id" veld vandaan komt .. ideeën?

PS:

table engine_account is basically the Account class in the application named Engine

2
@BurhanKhalid Bedankt, dat was zo dom van mij, maar het geeft me nog steeds een IntegrityError "Kolom gebruikersnaam is niet uniek" .. wanneer ik geen enkele opgeslagen "gebruikersnaam" heb gedefinieerd in mijn accountmodel.
toegevoegd de auteur Amyth, de bron
Ben je vergeten om syncdb uit te voeren?
toegevoegd de auteur Burhan Khalid, de bron

2 antwoord

Did you edit models.py after you ran syncdb?

Als dat het geval is, moet u uw tabel handmatig bewerken of uw database opnieuw maken met behulp van:

python manage.py syncdb

in de projectdirectory om de wijzigingen toe te passen.

6
toegevoegd
ik zie, laat me kijken, en bedankt voor je snelle reactie
toegevoegd de auteur Amyth, de bron
Het herscheppen van de database lost het op, heel erg bedankt buddy!
toegevoegd de auteur Amyth, de bron
graag gedaan! :)
toegevoegd de auteur scriptmonster, de bron

syncdb is deprecated in django 1.9 and later versions. So for django versions 1.9 or later run python manage.py makemigrations and then python manage.py migrate

2
toegevoegd