2012-03-09 34 views
0

モデルフォームの選択肢から選択されていないオプションを削除しようとしています。Djangoの選択肢非選択フィールド

私のモデルフィールドが宣言されています。

priority = models.IntegerField(choices=PRIORITIES_CHOICES) 

私のフォームのコードは次のとおりです。

class TaskForm(ModelForm): 
def __init__(self, *args, **kwargs): 
    super(TaskForm, self).__init__(*args, **kwargs) 

    self.fields['priority'].required = True; 

しかし、非選択されたフィールドを離れて行くことを望んでいません。 (私は------オプションについて話しています)。

+0

私はあなたもこの場合self.fields ['priority']となるデフォルトを指定することができると思います。初期値= "somevalue"とdjangoはemを追加しませんptyオプション – Paulo

+0

これは、-----オプションに初期値を追加しています:( –

答えて

1

試してみてください。

class TaskForm(ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(TaskForm, self).__init__(*args, **kwargs) 

     self.fields['priority'].choices = self.fields['priority'].choices[1:] 
+0

これはうまくいきますが、それを達成するのがより良いのですか?運に基づいています(最初の行は "------"です)。 –

+0

それは運が悪いです。あなたが何らかの理由でそれを自分で変更しない限り、常に最初のオプションになります –

+0

または、おそらく彼らは次のdjangoバージョンでそれを変更するでしょう:)私はそれが有効な解決策だと思うが、私はそれを "django"のやり方でやりたい。 (ある場合) –

0

誰もがまだジャンゴ1.5+、 "Djangoの道" でこれを行う方法を不思議場合:

class TaskForm(ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(TaskForm, self).__init__(*args, **kwargs) 

     self.fields['priority'].empty_label = None 

ます。また、直接フィールド宣言に追加することができます(

関連する問題