2010-11-27 4 views
2

ここに私のモデルクラスの2:ジャンゴ:post_save信号とリクエストオブジェクト

class DashboardVersion(models.Model): 
    name = models.CharField(_("Dashboard name"),max_length=100) 
    description = models.TextField(_("Description/Comment"),null=True,blank=True) 
    modifier = models.ForeignKey(User,editable=False,related_name="%(app_label)s_%(class)s_modifier_related") 
    modified = models.DateField(editable=False) 

class Goal(models.Model): 
    goal = models.TextField(_("Goal")) 
    display_order = models.IntegerField(default=99999) 
    dashboard_version = models.ForeignKey(DashboardVersion) 

目標は、編集し追加、削除などをされ、私は修正されたユーザにDashboardVersion.modifierを変更したいですそれとDashboardVersion.modifedを現在の日付に変換します。

私はシグナルを使ってこれを実装しようとしています。しかし、post_save信号にはrequestが含まれていないようです。または、どこかから取得できますか、自分の信号を作成する必要がありますか?

または、私は全く異なる何かをするべきですか?

ありがとうございます! :-) Eric

答えて

1

Goalのアップデートを処理するビューでDashboardVersionを更新するのが最も簡単なことです。 Goalの更新を処理する同じモジュール内に複数のビューがある場合は、DashboardVersion更新ロジックを別の関数に取り除くことができます。

信号を使用して死んでしまった場合は、おそらくスレッドローカルのミドルウェアと一緒に何かをハックする可能性がありますが、最も簡単なアプローチが通常最高です。

+0

私はGoalモデルのsaveメソッドをオーバーライドして、これを処理すると考えています。このアップデートが行われる必要がある場所は5つあります。それで私は信号を使いたいのです。しかし、私はsaveメソッドをオーバーライドすることもうまくいくと思います。あなたが与えたオプションをありがとう! :) –

関連する問題