2011-08-14 11 views
1

でモデルを持って行動するための最良の方法:私はタスクモデル持っジャンゴ

class Task(models.Model): 
    text = models.TextField() 
    datetime = models.DateTimeField(auto_now_add=True) 
    taken = models.BooleanField(default=False) 
    done = models.BooleanField(default=False) 
    client = models.ForeignKey('UserProfile', related_name='tasks_given') 
    executor = models.ForeignKey('UserProfile', related_name='tasks_received') 
    def __unicode__(self): 
     return 'Task #'+str(self.id) 

を、私はその作成、検証を処理する必要があり、キャンセルなど それを行うための最善の方法は何ですか? views.pyに1つ(すべての場合)または少数(それぞれの場合)の機能を持たせる方が良いでしょうか? {% if %}がたくさんあるテンプレートを1つ持っている方が良いですか、それともいくつかある方が良いですか? 任意他のヒントは評価されます=)

+0

主な質問は、私はいくつかの機能の代わりに、条件の多い方へのモデルの行動を分割する必要があります。テンプレートに関する同じ質問。ジャンゴ管理者について – mindmaster

答えて

0

アクションの場合、あなたはより良い彼らは、非常にモジュール化された機能の多くは、すでに焼きと持って、クラスベースの汎用ビューを拡張したいテンプレート名など彼らがいる

https://docs.djangoproject.com/en/1.3/ref/class-based-views/#detail-views

のために気の利いたデフォルトmixinの構成に基づいて、機能の各部分またはステップごとに、オーバーライドする必要のある非常に特殊な方法があります。一度それを取得すれば、それは非常に簡単です。

はテンプレートの場合、extendsincludeタグを使用し、繰り返しコードを避けます。できるだけ自動的に生成されたコードを使用してください。

+0

ありがとうございます、私は一般的なビューについてもっと学びます – mindmaster

0

chapter 2 of the tutorialに示すように、django-adminサイトを使用できます。

+0

iknowは、私は 'ジャンゴ-admin'へのユーザーアクセスを与える、すべてこのアクションは、ユーザー – mindmaster

+0

@mindmasterによって実行されている意味ですか?それはそれが意味するものです。 –

+0

管理者権限を持たないユーザーもタスクを管理する必要があります – mindmaster

0

私は、あなたが「行動するための最良の方法、」によって何を意味するか正確にはわからないが、あなたがオブジェクトの作成と検証を処理したい場合は、モデル内の余分なメソッドを書くことができます。

class Task(Models.model): 
    ... 
    ## fields 
    ... 

    ## Example of a method on the model 
    def validate(self): 
     ## validate the model here 

私はあなたがビュー内の検証コードを最小限に抑えたいと思う。代わりに、すべてのあなたは、タスク・モデルを使用するビューで検証を記述することで

new_task.validate() 

:あなたのビューから、あなたのような検証できる場合、それはいいだろう。

+0

I 1つの関数に複数の異なる状況(作成、表示など)を処理するif関数をたくさん書くのが良いか、1つではなくいくつかの関数を作成する方が良い。 – mindmaster

+0

1つではなく複数の関数を持つ方がよいと思う。私はあなたが望む機能のタイプごとに1つの機能を持つと思います。つまり、作成するためのものと、検証するためのものです。 – jkeesh

+0

テンプレートはどうですか?作成/表示/一覧表示するか、複数のテンプレートを使用する方が良いでしょうか? – mindmaster

関連する問題