2009-04-17 10 views
6

モデルのユーザーステータスを把握しています。モデル 'レッスン'の場合、私はステータス「Finished」、「Learning」、「Viewed」を持っています。モデルのリストのビューでは、ユーザーステータスを追加したいと思います。これを行う最善の方法は何ですか?djangoモデルメソッドへのリクエストを追加しますか?

1つのアイデア:モデルメソッドにリクエストを追加すると、そのトリックが実行されます。それは可能ですか?

編集:get_status(self、request)を使用して、テンプレートコード{{lesson.get_status}}を意味しました。出来ますか?それは動作しません(まだ)。

答えて

1

はい、あなたは要求のparamaterを使用してモデルにメソッドを追加することができます。

class MyModel(models.Model): 
    fields.... 

    def update_status(self, request): 
     make something with the request... 
+0

がビューからこのメソッドを呼び出すことが可能ですか?それは目標ですが、まだ動作しません! –

+0

{{lesson.update_status}}のようなテンプレートコードを意味します –

+0

テンプレートからメソッドに引数を渡すことはできません。 –

2

あなたのステータスは変更は、次の2つの別々の部分にこれを破るために持っている値である場合。

  1. ステータスを更新しています。これはビュー関数で呼び出さなければなりません。しかし、実際の仕事はモデルに属しています。ビュー関数はモデルメソッドを呼び出し、保存を行います。

  2. ステータスを表示しています。これはステータスの文字列表現です。

モデル

class MyStatefulModel(models.Model): 
    theState = models.CharField(max_length=64) 
    def changeState(self): 
     if theState is None: 
      theState= "viewed" 
     elif theState is "viewed": 
      theState= "learning" 
     etc. 

ビュー機能

def show(request, object_id): 
    object= MyStatefulModel.objects.get(id=object_id) 
    object.changeState() 
    object.save() 
    render_to_response(...) 

テンプレート

<p>Your status is {{object.theState}}.</p> 
関連する問題