2017-10-05 76 views
0

我在创建具有外部对象的用户配置文件时遇到问题。Django创建模型时出错

我有一个用户,我想附加一个帐户类型给该用户。

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 

的问题是,我发现了以下错误:

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

如何呼吁外键Account类?

+2

重新整理文件,以便'Account'首先声明。 –

+0

将您的帐户类放在UserProfile类的顶部 – Satendra

+0

John Gordon将帐户向上移动 –

回答

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 

可以使用"app_name.Account"代替Account。将app_name替换为您的应用的名称。

+0

您是否尝试过执行此操作,它是否真的起作用 – Sanket

0

按照约翰·戈登评论,我搬到上面帐户和用户配置它的工作

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) 

谢谢你们:)