モデルにブール値フィールドがあり、ビューのチェックボックスとして表示されず、カスタム検証を実行しています。ただし、ユーザーがそのチェックボックスをオンにしても、モデルフォームのクリーンメソッドで常にその値を「False」として取得しています.djangoが自動的に値をFalseに変換することをどこかで読みました。
チェックボックスがチェックされているかどうかを確認するにはどうすればよいですか?この問題に関するヘルプをいただければ幸いです
私のモデルは次のとおりです:-
discard_word = models.BooleanField(max_length=30)
私のモデルフォームビューは次のとおりです:-
if request.method == 'POST':
form_with_post = FormSet(request.POST,queryset=page_query)
if form_with_post.is_valid():
次のように私のフォーム: -
class Un_Verified_bn_in_form(ModelForm):
def __init__(self, *args, **kwargs):
super(Un_Verified_bn_in_form, self).__init__(*args, **kwargs)
instance = getattr(self, 'instance', None)
if instance and instance.pk:
self.fields['phrase'].required = False
self.fields['phrase'].widget.attrs['readonly'] = True
self.fields['id'].widget.attrs['readonly'] = True
self.fields['id'].required = False
self.fields['alternate_phrase'].required = False
#self.fields['discard_word'].required = False
def clean(self):
cleaned_data = self.cleaned_data
replace_phrase = cleaned_data.get("alternate_phrase")
discard_word_val = cleaned_data.get("discard_word")
if (replace_phrase == u'' or replace_phrase == None) and (discard_word_val == False ):
raise ValidationError('You need to select atleast one field')
return cleaned_data
class Meta:
model = Un_Verified_bn_in
fields = ('id','phrase','alternate_phrase','discard_word')
exclude = ('time','verified_by_usr','verified_by_admin','author')