私のモデルの1つではかなり謎の問題があります。 ProgramMilestoneはMilestone
とProgram
間(through='...'
を使用して)、リンカテーブルがあるDjango:モデル__init __()はすべての更新時に呼び出されます
class Program(models.Model)
...
def __init__(self, *args, **kwargs):
super(Program, self).__init__(*args, **kwargs)
for m in Milestone.objects.all():
try:
ProgramMilestone.objects.create(milestone = m, program = self)
except IntegrityError: # The link already exists.
pass
を次のように私は__init__
をオーバーライドしてきました。
私はすべてのMilestones
が唯一のプログラム作成時にProgram
に追加するたいのですが、私もDjangoのadminインタフェースでプログラムを開くたびに、今、それはそれは不可能ジャンゴのあらゆるProgramMilestone
オブジェクトを削除すること(for m...
ループを実行します管理者、リフレッシュ時に再作成されるため)。
__init__
が誤解していますか?その場合、この動作(インスタンス化時にのみ実行されるワンオフコード)を作成するにはどうすればよいですか?
Pythonでは、クラスのインスタンスが作成されるたびに__init__が呼び出されます。したがって、__init__は、プログラムの照会時および最初の作成時に呼び出されます。 –