不确定导致此错误的原因。请帮忙
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
答案 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路径上。
只需将模型放入项目中的应用程序而不是尝试做与您类似的事情,您将会更好。
如果你使用谷物,你或多或少会对抗谷物和蟒蛇更好。