おそらく非常に基本的な Django の質問がもう 1 つあります。クラス用のデータベース アプリを作成しています。アプリ内から現在の年を設定できるようにしたいと考えています。この背後にある考え方は、すべての採点などが完了したら、次の学年に手動で切り替えることができるということです。現在の年を切り替える機能は、他のことも行うことになっています-学生を新しいデフォルトコースに入れるなど。
そこで、MetaData というモデルを作成しました。
class MetaData(models.Model):
data_id = models.IntegerField(default = 1, unique = True)
current_year = models.IntegerField(choices=ACADEMIC_YEARS)
たとえば、新しいコース/学生を入力したいときにデフォルトとして設定するために、他のモデルで current_year にアクセスできれば素晴らしいと思います。私はこれを試しました:
class Course(models.Model):
try:
meta = MetaData.objects.get(data_id=1)
current_year = meta.current_year
except MetaData.DoesNotExist:
current_year = 2010
year = models.IntegerField(choices=ACADEMIC_YEARS, default=current_year)
残念ながら、syncdb を初めて実行すると、"No such table: database_metadata" というエラーが表示されます。これは、コードのテスト時に syncdb がテーブルを作成していないためだと思います。
これに対するより良い解決策はありますか?