NameError при попытке заполнить поле формы из модели - PullRequest
0 голосов
/ 22 марта 2011

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

Я следую примеру, взятому из Создание форм из моделей | Документация Django

У меня есть форма;

# forms.py

from django import forms
from my_project.my_app.models import Author

class AuthorForm(forms.Form):
    name = forms.CharField(max_length=100)
    title = forms.CharField(max_length=3,
            widget=forms.Select(choices=TITLE_CHOICES))
    birth_date = forms.DateField(required=False)

и модель;

#models.py

from django.db import models

TITLE_CHOICES = (
    ('MR', 'Mr.'),
    ('MRS', 'Mrs.'),
    ('MS', 'Ms.'),
)
class Author(models.Model):
    name = models.CharField(max_length=100)
    title = models.CharField(max_length=3, choices=TITLE_CHOICES)
    birth_date = models.DateField(blank=True, null=True)

    def __unicode__(self):
        return self.name

Однако, когда я получаю следующую ошибку при попытке доступа к форме;

NameError at /

имя 'TITLE_CHOICES' не определено

Метод запроса: GET URL запроса: http://192.168.1.111:8000/ Джанго Версия: 1.2.4 Тип исключения: NameError Исключение Значение: имя 'TITLE_CHOICES' не определено

Есть ли что-то, что я должен сделать, чтобы позволить forms.py получить доступ к TITLE_CHOICES в models.py?

Заранее спасибо.

1 Ответ

3 голосов
/ 22 марта 2011

TITLE_CHOICES должно быть определено внутри класса:

from django.db import models

class Author(models.Model):
    TITLE_CHOICES = (
        ('MR', 'Mr.'),
        ('MRS', 'Mrs.'),
        ('MS', 'Ms.'),
    )
    name = models.CharField(max_length=100)
    title = models.CharField(max_length=3, choices=TITLE_CHOICES)
    birth_date = models.DateField(blank=True, null=True)

    def __unicode__(self):
        return self.name

И в виде:

from django import forms
from my_project.my_app.models import Author

class AuthorForm(forms.Form):
    name = forms.CharField(max_length=100)
    title = forms.CharField(max_length=3,
            widget=forms.Select(choices=Author.TITLE_CHOICES))
    birth_date = forms.DateField(required=False)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...