2016-07-19 4 views
1

これは長いポストになりますので、私に同行してください。以前モデルに書いたたくさんのコードを書き直さなければならないことに気づいたと思います。最後の方法は、作成しsubqequent定義モデルのメソッドを呼び出すことこのためにクラスベースのビューまたは関数ベースのビューを使用する必要がありますか?

class Word(models.Model): 
    '''Word table for word, and frequency data''' 

    language = models.ForeignKey(Language) 
    name = models.CharField(max_length=50) 
    frequency = models.IntegerField(default=0) 
    rank = models.IntegerField(default=0) 


    def __unicode__(self): 
     value = u'%s' % (self.name) 
     return value 


    def wn_lookup(self): 
     '''Calls the wordnet CLI for self'''  
     ...breaks up the output and returns the definitions as a list of tuples 

    def wiktionary_lookup(self, wiktionary_prefix, driver): 
     ...looks up the definition of the word on wiktionary 
      returns data as a list 

    def define(self, driver, choice, ask_input): 
     ...Prints out a lot of options and asks the user to choose 
      what they want as a definition 

      It then creates objects and calls other methods on a 
      subsequent definitions model 

注:

私のモデルは、このように見えます。

私は、データ入力を半自動化するために多くのユーザー入力が必要なメソッドを備えたモデルがいくつかあります。私はこれを愚かにしたと信じています。私は実際にそれらをビューに追加するべきですが、私はそれをどうやって行うのかちょっと混乱しています。

  1. クラスベースのビューまたは関数ベースのビューを使用する必要がありますか?
  2. 私は実際にこれらのビューのすべてのフォームとテンプレートを書かなければならないと思いますか?
  3. モデル内のすべてをそのまま残し、ビューに入れないことは可能でしょうか?あなたが欲しいものを使用することができます

答えて

2
  1. Class Based Viewsの利点は、継承です。あなたの基盤を拡張することができますViewし、プロジェクト全体で使用します。また、Generic Class Based Viewsで作業するのはかなり速いです。

  2. はい、ユーザー入力を提供するためにこのモデルのフォームを書く必要があります。 Djangoは、モデルに基づいてデータを保存するフォームのショートカットを提供します。 Model Formsは、モデル内のすべてのフィールドを等価なフォームフィールドに自動的にマップします。

  3. DjangoはFat Modelsというパターンに従っているため、モデルの操作をモデル定義内に格納することができます。
関連する問題