Django: NameError 'Business' не определено - PullRequest
0 голосов
/ 19 мая 2011

Не уверен, что является причиной этой ошибки. Пожалуйста, помогите

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 ]

1 голос
/ 19 мая 2011

Пожалуйста, посмотрите на свою ошибку: Exception Location: /home/src/common/models.py in ImageBank, line 38 проблема существует в классе ImageBank, который, по-видимому, вы также используете ссылку ForeignKey в поле логотипа.

Я предполагаю, что в чем проблемаэто то, что вы ссылаетесь на Business, прежде чем он будет определен как что-то вроде ссылки ForeignKey внутри поля в ImageBank.Если это так, определяется ли ImageBank перед бизнес-моделью внутри вашего models.py?Потому что это приведет к этой ошибке.Надлежащим способом выполнения циклических ссылок на ForeignKey является принудительное использование одного ForeignKey с уникальным ограничением.

В Django эта концепция встроена как тип поля, называемого полем OnetoOne.Вы изучали использование поля OnetoOne?Смотри: http://docs.djangoproject.com/en/dev/ref/models/fields/#onetoonefield

1 голос
/ 19 мая 2011

Вы импортировали модели в представлении? Что-то вроде:

from models import Business

в начале просмотра файла

0 голосов
/ 19 мая 2011

Вы делаете вещи намного более сложными для себя, когда ваш файл models.py находится в странном несвязанном месте.

Модели могут быть импортированы только из модулей Python, поэтому вам нужно убедиться, что ваш models.py находится в каталоге, который является модулем Python, и что он находится на пути Python.

Вы будете гораздо лучше, если будете просто помещать свои модели в приложение в своем проекте, а не пытаться делать что-то вроде вас.

Более или менее вы работаете с зерном, а питон намного лучше, если вы работаете с зерном.

0 голосов
/ 19 мая 2011

Если эта модель есть в приложении, которое вы написали:

Убедитесь, что приложение указано в INSTALLED_APPS в вашем файле settings.py

#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 *
0 голосов
/ 19 мая 2011

Вы забыли импортировать модель в виде или неправильно ссылаетесь на нее.

...