वहाँ Django में एक विजेट एक चेकबॉक्स के बजाय एक models.BooleanField
दो के रूप में रेडियो बटन प्रस्तुत करना 1.0.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
इसके अलावा कि MySQL बूलियन के लिए tinyint का उपयोग करता है, तो सही/गलत याद वास्तव में 1/0 कर रहे हैं। बस के बजाय ints का उपयोग करके संक्षेप
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
थोड़ा संशोधित करना डैनियल Roseman का जवाब है, तो आप bool को ठीक कर सकता है ("गलत") यह सच है समस्या =:: मैं इस विवश फ़ंक्शन का उपयोग किया
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
यहां एक त्वरित है & गंदा विवश है कि "गलत" के आसपास हो जाता है लैम्ब्डा का उपयोग कर समारोह, -> यह सच है समस्या:
...
boolfield = forms.TypedChoiceField(coerce=lambda x: x and (x.lower() != 'false'),
...
Django 1.2 "विजेट" modelforms के लिए मेटा विकल्प जोड़ा गया है:
अपने models.py में, अपने बूलियन क्षेत्र के लिए "विकल्प" निर्दिष्ट करें:
class MyModelForm(forms.ModelForm):
class Meta:
model = MyModel
widgets = {
'yes_or_no': forms.RadioSelect
}
:
BOOL_CHOICES = ((True, 'Yes'), (False, 'No'))
class MyModel(models.Model):
yes_or_no = models.BooleanField(choices=BOOL_CHOICES)
फिर, अपने forms.py में, उस क्षेत्र के लिए RadioSelect विजेट निर्दिष्ट मैंने इसका परीक्षण SQLite डीबी के साथ किया है, जो बूलियन को 1/0 मानों के रूप में भी स्टोर करता है, और ऐसा लगता है कि कस्टम कॉरपोरेशन फ़ंक्शन के बिना ठीक काम करता है।
दूर तक सबसे साफ और सबसे अधिक "Django" y समाधान। धन्यवाद! –
यह बहुत अच्छा है। मैं यह थोड़ा 'django.utils.translation आयात ugettext_lazy से _' के रूप में उपयोग करते हुए और अपडेट करके संशोधित करेगा 'हां' और 'नहीं' के स्थानीयकृत संस्करणों अनुमति देने के लिए' BOOL_CHOICES' होने के लिए: 'BOOL_CHOICES = ((यह सच है, _ ('हां')), (झूठी, _ ('नहीं'))) ' – tatlar
मुझे लगता है कि इसे स्थानीयकृत करने के लिए अतिरिक्त कोड बिंदु से विचलित हो जाएगा। पाठक के लिए एक अभ्यास;) – eternicode
जैसा कि @ डैनियल रोज़मन जवाब में समस्या है, बूल ('गलत') -> सच है, इसलिए अब मैंने एक समाधान बनाने के लिए दो उत्तरों को जोड़ दिया है।
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}
मैं Django 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)
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)। आपको फ़ील्ड पर आवश्यक = गलत सेट करने की आवश्यकता है। – grokpot
Django 1.6 में, मेरे लिए काम किया है::यहाँ सबसे सरल दृष्टिकोण मैं मिल सकता है (मैं Django 1.5 उपयोग कर रहा हूँ) है,
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. रेडियो बटन बटन के रूप में?
- 2. रेडियो बटन में शुरुआती मूल्य django फॉर्म
- 3. डिफ़ॉल्ट चेकबॉक्स रेडियो बटन के बजाय के रूप में एक Django रूप में एक बूलियन मॉडल क्षेत्र प्रदर्शित करें
- 4. रेडियो बटन
- 5. रेडियो बटन
- 6. रेडियो बटन
- 7. रेडियो बटन
- 8. रेडियो बटन सूची में जाँच रेडियो बटन का मूल्य प्राप्त
- 9. जावास्क्रिप्ट जांच रेडियो स्वचालित रूप से बटन
- 10. आईफोन ऐप में रेडियो बटन
- 11. बटन समूह में रेडियो बटन कैसे जोड़ें?
- 12. AngularJS रेडियो बटन
- 13. Mootools सेट रेडियो बटन
- 14. रेडियो बटन शैली
- 15. रेडियो बटन स्टाइलिंग
- 16. रेडियो बटन + सरणी तत्व
- 17. फ़ायरफ़ॉक्स रेडियो बटन अजीबता
- 18. अंतर (रेडियो बटन)
- 19. एकाधिक रेडियो बटन, रेडियो बटन समान नाम वाले कैसे जांचें?
- 20. चेक बटन के रूप में रेडियो बटन के लिए प्रारंभिक मान असाइन करें
- 21. एमवीसी रेजर रेडियो बटन
- 22. रेडियो बटन चुना गया?
- 23. रेडियो बटन और text_field
- 24. WinForm बाध्यकारी रेडियो बटन
- 25. वाईआई रेडियो बटन
- 26. ट्विटर बूटस्ट्रैप रेडियो बटन
- 27. जावास्क्रिप्ट jquery रेडियो बटन
- 28. एएसपी.नेट रेडियो बटन
- 29. बूटस्ट्रैप रेडियो बटन
- 30. jQuery/जावास्क्रिप्ट - रेडियो बटन
दुर्भाग्य से यह काम नहीं किया क्योंकि मजबूर = बूल को एक स्ट्रिंग मान पास किया जा रहा है, न कि बूलियन मान और बूल ("गलत") => सही। तो मुझे स्ट्रिंग मान लेने और बूल में कनवर्ट करने के लिए कस्टम कॉरर्स फ़ंक्शन लिखना पड़ा, फिर यह काम किया। सूचक के लिए धन्यवाद। – dar
वास्तव में अपडेट किया जाना चाहिए, @dar नोट्स के रूप में, यह वास्तव में 'बूल (' गलत ') '=>' True' के बाद से काम नहीं करेगा। –
@ डैनियल, यह काम नहीं करता है, बूल ('गलत') सही –