私のdjangoアプリケーションのmodels.pyにこれらのクラスがあります。データベースとしてpostgresql 8.3を使用しています
class Course(models.Model):
students = models.ManyToManyField(User)
title = models.CharField(max_length=200)
description = models.TextField()
def __unicode__(self):
return self.title
class Meta:
verbose_name_plural="Courses"
class CourseChoicesForm(forms.Form):
courseoption = forms.ChoiceField(choices=[(x.id,x.title) for x in Course.objects.all()])
実行するpython manage.py syncdb
と、次のエラーが表示されますrelation course is not found
...
File "/home/me/Django-1.4/django/utils/importlib.py", line 35, in import_module
__import__(name)
File "/home/me/dev/python/django/myprj/myapp/models.py", line 50, in <module>
class CourseChoicesForm(forms.Form):
File "/home/me/dev/python/django/myprj/myapp/models.py", line 52, in CourseChoicesForm
courseoption = forms.ChoiceField(choices=[(x.id,x.title) for x in Course.objects.all()])
...
File "/home/me/Django-1.4/django/db/backends/postgresql_psycopg2/base.py", line 52, in execute
return self.cursor.execute(query, args)
django.db.utils.DatabaseError: relation "myapp_course" does not exist
更新: 私はこれを次のように解決しました
class CourseChoicesForm(forms.Form):
courseoption = forms.ChoiceField(choices=[],required=False)
def __init__(self, *args, **kwargs):
super(CourseChoicesForm, self).__init__(*args, **kwargs)
self.fields['courseoption'].choices = [(x.id,x.title) for x in Course.objects.all()]
それでも、この動作が発生した理由はよくわかりません。誰か説明してもらえますか?