2012-02-03 26 views
0

私は何度もドキュメントを繰り返してきました。それは、私は複数の選択ウィジェットを使用するdjango.formsをインポートする必要があると言います。リーグモデルを定義していて、DAY_CHOICESをmultiplechoicefieldとして選択したいのであれば、私は混乱しています。 Modelクラスの中で呼び出しフォームを定義できますか?私のクエリをよりよく理解するためdjangoでMultipleChoiceFieldを使用する

は、ここで私のmodels.py

class League(models.Model): 
    DAY_CHOICES = (
     ('MO', 'Monday'), 
     ('TU', 'Tueday'), 
     ('WE', 'Wednesday'), 
     ('TH', 'Thursday'), 
     ('FR', 'Friday'), 
     ('SA', 'Saturday'), 
     ('SU', 'Sunday'), 
    ) 

    SEASON_STATUS = (
     ('In Progress', 'In Progress'), 
     ('Concluded', 'Concluded') 
    ) 

    LEAGUE_TYPE = (
     ('Home', 'Home League'), 
     ('Away', 'Home and Away League'), 
     ('Cup', 'Cup'), 
     ('CupAway', 'Cup, Home and Away'), 
    ) 

    name = models.CharField(max_length=30) 
    league_type = models.CharField(max_length=30, choices=LEAGUE_TYPE, default='Away') 
    play_days = models.CharField(max_length=28, choices=DAY_CHOICES, default='SU') 
    #defining rules for winning and loosing 
    win = models.IntegerField(max_length=2) 
    loss = models.IntegerField(max_length=2) 
    draw = models.IntegerField(max_length=2) 
    status = models.CharField(max_length=15, choices=SEASON_STATUS, default='In Progress') 

//マウス

答えて

1

あなたは本当にジャンゴで混乱したくない三つの異なるものがあります。

  • モデルフィールド
  • フォームフィールド
  • フォームウィジェット

モデルフィールドコントロールは、データベースに入るもの、自動フォーム作成機能を使用する場合、モデルフィールドタイプは特定のフォームフィールドを含むフォームを提供します。

フォームウィジェットは、ユーザーがフォーム内でやり取りするHTMLを制御します。フォームフィールドの種類によっては、動作可能な複数のウィジェットがある場合があります(つまり、ユーザが作成したフォームに比べて、日付ウィジェットの管理者が使用する時刻は&です)。

あなたがこの区別を明確にしたら、ドキュメントの多くはより意味をなさないはずです。

+0

_モデルフィールドはデータベースに入るものを制御し、自動フォーム作成機能を使用すると、モデルフィールドタイプは特定のフォームを含むフォームを提供しますfield_ <これは@KayESSを混乱させます。これによると、まず、選択肢を含む別々のモデルを作成する必要があります。その選択肢を呼び出すフォームを作成します。私のメインモデルでこのフォームを呼び出すことができます。右? – debuggerpk

+0

Djangoにモデルからフォームを要求すると、モデルフィールドに基づいて使用するフォームフィールドが選択されます。これは管理者の仕組みでもあります。したがって、モデルに入れる選択肢だけがデータベースに入ることができます。Djangoは同じ選択肢でフォームを作成しますが、今回はモデルフィールドではなくフォームフィールドで行います。 – KayEss

0

あなたのmodels.pyファイル内のフォームを構成しないです。 models.pyファイルは正常に見えます。フォーム、およびそれらのフォーム内の個々のフィールドを表すために使用されるウィジェットは、通常、forms.pyファイルで定義されます。 creating forms from modelsのドキュメントとcustomizing the display of models within the Adminインターフェイスのドキュメントを参照してください(このフォームでこのフォームを利用できると仮定している場合)。

+0

という複数選択ウィジェットがあります。私は管理者が複数の祝日の選択肢を選択できるようにしたいと考えています。 – debuggerpk

0

charFieldchoicesは、単一のを格納するために使用されます。

あなたが日曜日と月曜日を選択したとします。 play_daysに何を保存しますか?ある種のシリアライゼーション。 "SU、MO"?次に、データをシリアル化する方法をdjangoに伝える必要があります。また、これはおそらくという悪い考えです。データを照会するのが難しくなるためです。

代わり、日を保持するために新しいクラスを作り、そしてmany to many fieldplay_daysを変更することを検討してください。特典として、m2mフィールドにはデフォルトで

+0

私は[dateutil](http://labix.org/python-dateutil)のrruleを使用して、私が前に書いたカスタム関数を使ってフィクスチャを計算しています。だからSU、MOがdjango dbのカンマ区切りの値になりたい。それは私の人生をはるかに簡単に長期的に作るだろう:) – debuggerpk