Передача значений по умолчанию в несвязанную форму django

У меня есть два класса select, которые я пытаюсь создать в несвязанной форме. Выбранные данные имеют отношение только к представлению, которое создается в представлении, поэтому являются отбрасываемыми и не нуждаются в сохранении в модели.

Проблема, с которой я столкнулся, заключается в том, что я могу передать списки полей в порядке, но как мне установить "по умолчанию" проверенные / выбранные значения, чтобы форма стала "связанной"?

views.py

def cards(request):

sort_name = []
    sort_name.append("Alphabetic Order")
    sort_name.append("Most Popular")
    sort_name.append("Least Popular")
    sort_name.append("Highest Win Rate")
    sort_name.append("Lowest Win Rate")

    sort_id = range(len(sort_name))
    sort_list = list(zip(sort_id, sort_name))    

    <more code to make filt_list and zip it>

    if request.method == 'POST':
        form = cardStatsForm(request.POST, sortList=sort_list, filtList=filt_list)
        if form.is_valid():
           do something
        else:
           do something else

   else:
        form = cardStatsForm(filter_list, sort_list)

forms.py

class cardStatsForm(forms.Form):
    def __init__(self, filterList, sortList, *args, **kwargs):
        super(cardStatsForm, self).__init__(*args, **kwargs)
        self.fields['filts'].choices = filterList
        self.fields['filts'].label = "Select player rankings for inclusion in statistics:"
        self.fields['sorts'].choices = sortList
        self.fields['sorts'].label = "Choose a sort order:"

    filts = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=(), required=True)
    sorts = forms.ChoiceField(choices=(), required=True)

Трудность в том, что форма не проходит тест "is_valid", поскольку она не связана, и у меня есть параметр "required=true" (чтобы пользователь должен выбрать флажок / выбрать значение), но я не могу применить логику, поскольку кажется, что форма никогда не "связана".

Вы можете использовать django forms validation или передать значение defult в вашем views.py. Это вернет несвязанные формы, если значение не совпадает с вашим значением по умолчанию.

покажем вам, как это сделать в вашем views.py:

error_message = None 
default_value = "jhone" 
if form.is_valid():
           name = request.POST['name']
           defult_name = jhone
           if defult_name != name:
              error_message = 'Name must be jhone'
           if not error_message:
                 form.save()  #it will only save forms if default value match                       
           
           
        else:
           do something else
context = {'error_message':error_message,
           'default_value': default_value, 
            'form':form,  
           } #pass the context in your html template for showing default value and error message 

в вашем .html

    {{error_message}}
   <input type=text name='name' {%if form.is_bound %} value="{{default_value}} {%endif%}">

Я смог исправить свою проблему, добавив "inital=0" и изменив вызов формы, как описано ниже:

forms.py

filts = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple, choices=(), initial=0, required=True)
sorts = forms.ChoiceField(choices=(), initial=0, required=True)

views.py

    if request.method == 'POST':
        form = cardStatsForm(data=request.POST, sortList=sort_list, filterList=filter_list)
    else:
        form = cardStatsForm(filter_list, sort_list)
Вернуться на верх