Django:NameError'Business'未定义

时间:2011-05-18 21:17:07

标签: django django-models django-views

不确定导致此错误的原因。请帮忙

NameError at /dash/
name 'Business' is not defined

Exception Location: /home/src/common/models.py in ImageBank, line 38

以下是模型:

class Business(models.Model):
    business_type = models.ManyToManyField(BusinessType)
    business_service_type = models.ManyToManyField(ServiceType)
    establishment_type = models.ForeignKey(EstablishmentType)
    logo = models.ForeignKey(ImageBank)
    phone = PhoneNumberField()
    address = models.ForeignKey(Address)
    website = models.URLField()
    name = models.CharField(max_length=64)

    def __unicode__(self):
        return self.name

观点:

def dashview(request):
    coupon = Coupon.objects.filter()
    bdnspk = request.user.id
    user = request.user.username
    bdns = Business.objects.values('name').get(id=bdnspk)
    context = {
        'coupon':coupon,
        'bdns':bdns,
        'user':user


    }
    return render_to_response(
        'dash/dash.html',
        {},
        context,
        context_instance = RequestContext(request),
    )
编辑:我的模型位于/home/src/common/models.py但我的django应用程序位于/ home / proj / site /如何导入?

ImageBank模型:

class ImageBank(models.Model):
    business = models.ForeignKey('Business')
    image = models.ImageField(upload_to="images/bank")

    def url(self):
        return self.image.url

5 个答案:

答案 0 :(得分:1)

您是否在视图中导入模型?类似的东西:

from models import Business

在视图文件的开头

答案 1 :(得分:1)

请查看您的错误:Exception Location: /home/src/common/models.py in ImageBank, line 38 ImageBank类中存在问题,您似乎也在徽标字段中使用ForeignKey引用。

我假设问题在于,在将Image定义为ImageBank中字段内的ForeignKey引用之前,您正在引用Business。如果是这种情况,ImageBank是否在models.py中的Business模型之前定义?因为这样做会抛出这个错误。执行循环ForeignKey引用的正确方法是使用唯一约束强制执行单个ForeignKey。

Django将这个概念作为一种称为OnetoOne字段的字段构建。您是否考虑过使用OnetoOne字段?请参阅:http://docs.djangoproject.com/en/dev/ref/models/fields/#onetoonefield

答案 2 :(得分:0)

您忘记在视图中导入模型,或者您错误地引用了模型。

答案 3 :(得分:0)

如果该模型位于您编写的应用中:

确保应用程序在settings.py中的INSTALLED_APPS中列出

#settings.py
INSTALLED_APPS = (
    'django....',
    ... more defaults ...,
    'myproject.appname',
)

位于您的观看页面顶部

#views.py
from appname.models import Business
#or import all models from that app
from appname.models import *

答案 4 :(得分:0)

你将models.py置于一个奇怪的无关位置,让你自己变得更加复杂。

只能从python模块导入模型,因此您需要确保models.py位于python模块的目录中,并且它位于python路径上。

只需将模型放入项目中的应用程序而不是尝试做与您类似的事情,您将会更好。

如果你使用谷物,你或多或少会对抗谷物和蟒蛇更好。