1日1分あたりの顧客注文数を保存するDBテーブルのセットがあります。過度に大きなテーブルを避けるために、1年の各月は異なるテーブルです。Django Webページでこのデータを取得するために、htmlフォーム入力から受け取った日付に基づいてdb_tableが入力されたモデルクラスを動的に作成します。問題は、新しい日付値を使用してフォームを再送信しても、クラスが新しいモデルに更新されず、古い値が保持されることです。
私のmodels.pyは次のようになります。
class baseModel(models.Model):
id = models.CharField(max_length=40)
date = models.IntegerField()
minute = models.IntegerField()
totalorders = models.IntegerField()
class Meta:
abstract = True
managed = False
def getModel(type, yyyymm):
if type == 'duration':
class DurationClass(baseModel):
medianduration = models.IntegerField()
avgduration = models.IntegerField()
class Meta:
db_table='orderTable' + yyyymm
#debug statement
print db_table
return DurationClass
yyyymmは、2012年4月の「201204」のような単なる文字列です。したがって、入力ボックスに2012年4月を入力すると正常に機能しますが、2012年3月に変更しても、4月のデータを照会します。デバッグステートメントから、db_tableが適切に更新されていることがわかりますが、何らかの理由で機能していません。新しいモデルなどを割り当てる前に、古い動的モデルの割り当てを解除する必要がありますか?view.pyでは、私はこれを行っています(ループではありません):
myModel = getModel('duration', startyyyymm)
QS = myModel.objects.using( ...etc
アイデアに感謝します。