Django 1.0.2にウィジェットがあり、models.BooleanField
をチェックボックスの代わりに2つのラジオボタンとしてレンダリングしますか?ラジオボタンとしてのDjango BooleanField?
答えて
あなたはのModelForm内のフィールドの定義をオーバーライドすることによってこれを行うことができます:
class MyModelForm(forms.ModelForm):
boolfield = forms.TypedChoiceField(
coerce=lambda x: x == 'True',
choices=((False, 'False'), (True, 'True')),
widget=forms.RadioSelect
)
class Meta:
model = MyModel
また偽/そうTrueの場合、MySQLはブールのためのtinyint型を使用していることを覚えて実際に1/0です。私は、この強制機能を使用:
def boolean_coerce(value):
# value is received as a unicode string
if str(value).lower() in ('1', 'true'):
return True
elif str(value).lower() in ('0', 'false'):
return False
return None
修正ダニエルローズマンの答えビットを、あなたは(「偽」)ブール値を修正する可能性だけではなく、int型を使用して簡潔に真の問題を=:
class MyModelForm(forms.ModelForm):
boolfield = forms.TypedChoiceField(coerce=lambda x: bool(int(x)),
choices=((0, 'False'), (1, 'True')),
widget=forms.RadioSelect
)
class Meta:
model = MyModel
これは私の編集フォームでは機能しません。フィールドの現在の値はモデルから引き出されません。代わりにエターナルコードの答えを使用しました。 – Dave
ここでは簡単です&「偽」の周りを取得ラムダを使用して、汚れた強制機能 - >真の問題:01:
...
boolfield = forms.TypedChoiceField(coerce=lambda x: x and (x.lower() != 'false'),
...
ジャンゴ1.2はmodelformsのための「ウィジェット」のMetaオプションを追加しましたあなたのmodels.pyで 、あなたのブールフィールドの "選択項目" を指定します。
:
BOOL_CHOICES = ((True, 'Yes'), (False, 'No'))
class MyModel(models.Model):
yes_or_no = models.BooleanField(choices=BOOL_CHOICES)
次に、あなたのforms.pyで、そのフィールドのRadioSelectウィジェットを指定します私はSQLite dbでこれをテストしました。これはブール値を1/0の値として格納しています。カスタムコルカス関数を使用しなくてもうまくいくようです。
最もクリーンで、ほとんどの "Django"の解決策です。ありがとう! –
これは素晴らしいことです。 'django.utils.translation import ugettext_lazy as _'を使用し、' BOOL_CHOICES'を次のように更新することにより、 'Yes'と 'No'のローカライズ版を少し修正するでしょう: 'BOOL_CHOICES =((True、_( 'はい'))、(False、_( 'No'))) ' – tatlar
私はそれをローカライズする余分なコードは、ポイントから気を散らすだろうと思います。読者のための練習;) – eternicode
@ダニエルローズマンの答えには、bool( 'False') - > Trueという問題があるので、ここでは2つの答えを組み合わせて1つの解決策を作りました。
def boolean_coerce(value):
# value is received as a unicode string
if str(value).lower() in ('1', 'true'):
return True
elif str(value).lower() in ('0', 'false'):
return False
return None
class MyModelForm(forms.ModelForm):
boolfield = forms.TypedChoiceField(coerce= boolean_coerce,
choices=((False, 'False'), (True, 'True')),
widget=forms.RadioSelect
)
class Meta:
model = MyModel
さて、これは動作します:)
eternicodeの答え@と同じですが、モデルを変更せずに:
class MyModelForm(forms.ModelForm):
yes_no = forms.RadioSelect(choices=[(True, 'Yes'), (False, 'No')])
class Meta:
model = MyModel
widgets = {'boolfield': yes_no}
私はジャンゴ1.2+でのみ動作を考える
アン他の解決策:
from django import forms
from django.utils.translation import ugettext_lazy as _
def RadioBoolean(*args, **kwargs):
kwargs.update({
'widget': forms.RadioSelect,
'choices': [
('1', _('yes')),
('0', _('no')),
],
'coerce': lambda x: bool(int(x)) if x.isdigit() else False,
})
return forms.TypedChoiceField(*args, **kwargs)
ここで私は(私はDjangoの1.5を使用しています)見つけることができる最も簡単な方法です:次は私のために働いたDjangoの1.6では、
class MyModelForm(forms.ModelForm):
yes_no = forms.BooleanField(widget=RadioSelect(choices=[(True, 'Yes'),
(False, 'No')]))
これは適切な答えです。 –
このソリューションの検証は機能しますが、[文書の注記](https://docs.djangoproject.com/en/1.10/ref/forms/fields/#booleanfield)を参照してください。フィールドにrequired = Falseを設定する必要があります。 – grokpot
:
class EmailSettingsForm(ModelForm):
class Meta:
model = EmailSetting
fields = ['setting']
widgets = {'setting': RadioSelect(choices=[
(True, 'Keep updated with emails.'),
(False, 'No, don\'t email me.')
])}
- 1. ジャンゴ - ショーのBooleanFieldラジオボタン
- 2. Django - BooleanFieldのラジオボタンがあらかじめ選択されています
- 3. DjangoののBooleanFieldが編集モードで
- 4. ラジオボタンとしてDjangoのフォームで表示ブールモデルフィールドではなく、デフォルトのチェックボックス
- 5. Djangoラジオボタン
- 6. Djangoのフォームのラジオボタン
- 7. Djangoのラジオボタンの初期値
- 8. BooleanFieldをDjangoでより大きなチェックボックスを表示させる
- 9. のBooleanField私のアプリモデルで
- 10. ジャンゴModelFormサブクラスのBooleanFieldチェックボックス
- 11. ラジオボタンのグループとしてのNSButtonのグループ
- 12. default = 'False'はdjango admin BooleanFieldに反映されません。新しい項目を追加するとき
- 13. ラジオボタンとしてのWooCommerceのバリエーション
- 14. ラジオボタンの初期値django形式
- 15. ドキュメントの準備としてラジオボタンをクリック
- 16. 余分なbooleanFieldを使用してパスワードを作成する
- 17. Djangoのラジオボタンの選択を覚えている
- 18. Djangoはラジオボタン、私は次のモデルを持っている
- 19. Django ORM:データベースのcharカラムにBooleanFieldを関連付けることはできますか?
- 20. Android用Adober Airのラジオボタンとラジオボタンのグループ
- 21. salesforceのラジオボタンに関して
- 22. リバースプロキシとしてDjango
- 23. Flask-WTF TextFieldとBooleanFieldをインポートできません。
- 24. ラジオボタンをクリックしたとき
- 25. のRequest.FormとラジオボタンID
- 26. フォームフィールドのラジオボタンは常にON/TRUEとして送信します
- 27. JQuery:ラジオボタンとしてのチェックボックス、デフォルト選択無し
- 28. PHPとラジオボタン
- 29. PHPラジオボタンとセッション
- 30. asp:RequiredFieldValidatorとラジオボタン
残念ながら、これは動作しませんでしたが、強制ためには= boolはブール値ではなく、bool( "False")=> Trueではなく文字列値が渡されています。だから私は文字列の値を取ってboolに変換するカスタムコルカス関数を書かなければなりませんでした。ポインタありがとう。 – dar
@ darのように、これは 'bool( 'False')' => 'True'から実際にはうまくいきませんので、実際に更新する必要があります。 –
@Daniel、bool( 'False')はTrueを返します。 –