2017-10-05 4 views
0

Ich habe ein Problem beim Erstellen eines Benutzerprofils mit einem fremden Objekt.Django Fehler bei der Erstellung des Modells

Ich habe einen Benutzer, und ich möchte einen Account-Typ an diesen Benutzer anhängen.

model.py

from __future__ import unicode_literals 

from django.db import models 
from django.contrib.auth.models import User 


class UserProfile(models.Model): 
    user = models.ForeignKey(User, unique=True) 
    account = models.ForeignKey(Account, unique=True) 

class Account(models.Model): 
    reports = models.IntegerField(default=3) 
    accounttype = models.CharField(default='Free', max_length=250) 
    description = models.CharField(default='N/A', max_length=250) 
    monthlycost = models.FloatField(default=0.0) 

    def __str__(self): 
     return self.user.username + " - " + self.accounttype 

Das Problem ist Ich erhalte die folgenden Fehler:

account = models.ForeignKey(Account, unique=True) 
NameError: name 'Account' is not defined 

Wie rufe ich die Kontoklasse für den Fremdschlüssel?

+2

Dateien neu anordnen, so 'Account' zuerst deklariert wird. –

+0

setzen Sie Ihre Account-Klasse oben auf UserProfile-Klasse – Satendra

+0

John Gordon verschieben Konto bearbeitet –

Antwort

1
from __future__ import unicode_literals 

from django.db import models 
from django.contrib.auth.models import User 


class UserProfile(models.Model): 
    user = models.ForeignKey(User, unique=True) 
    account = models.ForeignKey("app_name.Account", unique=True) 

class Account(models.Model): 
    reports = models.IntegerField(default=3) 
    accounttype = models.CharField(default='Free', max_length=250) 
    description = models.CharField(default='N/A', max_length=250) 
    monthlycost = models.FloatField(default=0.0) 

    def __str__(self): 
     return self.user.username + " - " + self.accounttype 

können Sie "app_name.Account" anstelle von Account. Ersetzen Sie app_name durch den Namen Ihrer App.

+0

haben Sie versucht, indem Sie dies ausführen, funktioniert es wirklich – Sanket

0

Per John Gordon Kommentar zog ich Konto über Userprofile und es funktionierte

class Account(models.Model): 
    reports = models.IntegerField(default=3) 
    accounttype = models.CharField(default='Free', max_length=250) 
    description = models.CharField(default='N/A', max_length=250) 
    monthlycost = models.FloatField(default=0.0) 

    def __str__(self): 
     return self.user.username + " - " + self.accounttype 


class UserProfile(models.Model): 
    user = models.ForeignKey(User, unique=True) 
    account = models.ForeignKey(Account, unique=True) 

Danke Jungs :)

Verwandte Themen