В приложении django у меня есть модели для Word (для изучения), Student (обучение), а StudentWord - это таблица для обработки многие ко многим:django новое поле, генерирующее «глобальное имя ... не определено» ошибка
class Word(models.Model):
word = models.CharField(max_length=80)
image = models.ForeignKey(Image)
language = models.ForeignKey(Language)
def __unicode__(self):
return self.word
class Student(models.Model):
username = models.ForeignKey(User)
words = models.ManyToManyField(Word, through='StudentWord')
def __unicode__(self):
return self.username.username
class StudentWord(models.Model):
word = models.ForeignKey(Word)
student = models.ForeignKey(Student)
level = models.IntegerField()
nextdate = models.DateField() <-- this field newly added
learned = models.BooleanField()
def __unicode__(self):
return u'%s %s' % (self.student, self.word)
Я имел это работает, но хотел бы добавить функцию, где приложение будет знать, когда была следующая дата попросить студента это слово. Для этого я добавил поле nextdate к модели StudentWord, удалил таблицу студента в MySQL, использовал syncdb для его регенерации и использовал страницу администрирования, чтобы успешно добавить несколько студенческих слов (с новым полем для даты в нем).
Однако следующая часть вида генерирует сообщение об ошибке:
def index(request):
last_question = request.session.get('last_question', 'none')
student_language = request.session.get('student_language', 'english')
student=Student.objects.get(username=request.user)
words_student_knows = Word.objects.filter(studentword__student=student, studentword__learned=True)
words_student_knows.filter(studentword__nextdate<=datetime.date.today())
Ошибка:
Exception Type: NameError
Exception Value:
global name 'studentword__nextdate' is not defined
Exception Location: /home/wordcode/words/vocabulary/views.py in index, line 32
линия 32 является последней линией фрагмента из приведенного выше точек зрения. Когда я удаляю этот фильтр, ошибка исчезает, поэтому, похоже, это связано с новым полем. Я использовал: import datetime ... в представлении, и я могу использовать datetime.date.today() в другом месте кода без проблем.
Мое предположение заключалось в том, что каким-то образом оно не появилось в новом добавленном поле, но поскольку сайт-администратор понимает, что он есть, это, похоже, не является вероятным и в любом случае удаляет таблицу студенческого слова и воссоздает ее должен сделать трюк.
Любая помощь или совет приветствуются.
Справа вы, спасибо! – rossdavidh