Checkbox django return all false

Мой флажок всегда возвращает значение False моя модель

ho_so_giu=models.BooleanField(default=False)

моя форма

 ho_so_giu = forms.BooleanField(label="Hồ sơ giữ", widget=forms.CheckboxInput(attrs={'class': 'form-check-input', 'id': 'ho_so_giu_text', 'name': 'ho_so_giu_text',}),required=False)

в моем html-шаблоне

<div class="form-check form-switch">
     {{form.ho_so_giu}}
     <label class="form-check-label" for="ho_so_giu_text">Hồ sơ giữ</label>
</div>

с моей точки зрения,

print(form.cleaned_data["ho_so_giu"])  ## return False
print(request.POST.get("ho_so_giu"))   ## return None
print(request.GET.get("ho_so_giu"))    ## return None

если я пытаюсь распечатать ho_so_giu_text, он выдает ошибку

    print(form.cleaned_data["ho_so_giu_text"])
KeyError: 'ho_so_giu_text'

Я использую ajax для возврата значения из кода

ho_so_giu =$('#ho_so_giu_text').val() //return on

Спасибо, что прочитали, помогите мне

Я думаю, что проблема может быть связана с вашей формой, попробуйте следующее:

class MyForm(forms.ModelForm):
    class Meta:
        model = MyModel
        fields = ['ho_so_giu']
        widgets = {
            'ho_so_giu': forms.CheckboxInput(
                'class': 'form-check-input', 
                'id': 'ho_so_giu_text', 
                'name': 'ho_so_giu_text'
            )
        }

Примечания:

  1. Я не знаю, почему вы дали имя форме. Я никогда не видел этого раньше. Может быть, это создает проблемы с почтовым запросом к бэкенду?
  2. Пробовали ли вы создать форму на фронтенде самостоятельно? Используя только html? Это было бы хорошим способом отладить проблему.
  3. Рассмотрите возможность написания гибридной формы, в основном на html, с динамическими элементами. Это позволит вам точно отслеживать происходящее. Посмотрите пример ниже:
<input  name="{{ wc_user_form.last_name.name }}" type="text" class="form-control" id="{{ wc_user_form.last_name.auto_id }}" placeholder="Votre Nom" oninput="customValidation(this);" required>
<label for="{{ wc_user_form.last_name.auto_id }}">{{ wc_user_form.last_name.label }}</label>

Довольно круто, а? Обратите особое внимание на тег шаблона {{ form.field.auto_id }}. Он, как вы можете себе представить, генерирует id поля, которое ожидает бэкенд, чтобы выполнить form.save()

Вернуться на верх