Django Forms - Как связать флажок с логическим полем - PullRequest
0 голосов
/ 17 апреля 2019

python 3.6 django 1.11 (еще не обновил)

Я хочу добавить в форму флажок True / False.Я вижу, как это сделать на html-странице и в самой форме, но они не связаны между собой.Всякий раз, когда я устанавливаю флажок True, поле, представляющее флажок, имеет значение false.

HTML

    <div class='form-group'>
    <input type="checkbox" name="donation-repeat" id="donation-repeat_id">
    <label for="donation-repeat_id">Repeat my donation (yearly)</label><br>
    </div>

Forms.py

class DonationCreateForm(forms.ModelForm):
    recurring_donation = forms.BooleanField(required = False,label = 'donation-repeat_id')
    class Meta:
        model = Donation
        fields = ['total','recurring_donation']   

    def clean_recurring_donation(self):
        print('we are cleaning now')
        print(self.cleaned_data)
        recurring_donation =  self.cleaned_data['recurring_donation']
        print('recurring_donation1 ', recurring_donation)
        return recurring_donation

Views.py

class DonationCreateView(LoginRequiredMixin, CreateView):
    form_class = DonationCreateForm
    template_name = 'donations/create.html'

    def form_valid(self, form):
        donation_form = form.save(commit=False)

Однако я всегда получаю этот вывод recurring_donation1 False

Независимо от того, установил ли я флажок или нет.

Что я делаю не так?

Ответы [ 3 ]

0 голосов
/ 17 апреля 2019

Попробуйте следующее: удалить 'required = False'

удачи!

0 голосов
/ 17 апреля 2019

Вы должны связать свою форму с данными, поступающими из вашего запроса.По вашему мнению

 form = DonationCreationForm(request.POST)

Вы также должны использовать тег в своем шаблоне в дополнение к кнопке отправки.

0 голосов
/ 17 апреля 2019

Я думаю, вы должны использовать NullBooleanField вместо BooleanField

class DonationCreateForm(forms.ModelForm):
    recurring_donation = <b>forms.NullBooleanField</b>(required=False, label='donation-repeat_id')
    # your code
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...