Django POST не хватает позиционного аргумента

Я обхожусь без использования модели для получения от пользователя базовых ответов фильтра для целей презентации. Соответственно, я определил класс cardsStatsForm следующим образом:

forms.py

from django import forms


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)

К сожалению, когда я получаю команду POST, я получаю ошибку позиционного аргумента. Однако я в замешательстве, поскольку я думал, что смысл POST заключается в получении значений. Так почему же код "после POST" обычно запускает экземпляр класса? Если я отправлю позиционное значение, не будет ли оно перезаписано этим утверждением? Разве request.POST не является формой оператора "self"?

views.py

@login_required()
def cards(request):

    f_name = STAT_FILES / 'csv/segment_summary_quart.csv'
    # pathname = os.path.abspath(os.path.dirname(__file__))
    df = pd.read_csv(f_name, index_col=None)

    pl_name = STAT_FILES / 'pickles/lbounds'
    pu_name = STAT_FILES / 'pickles/ubounds'
    lbounds = pickle.load(open(pl_name, "rb"))
    ubounds = pickle.load(open(pu_name, "rb"))

    filter_name = []
    i = 0
    max_i = len(ubounds)
    while i < max_i:
        filter_name.append(f'Personal best trophy range: {str(int(lbounds[i])).rjust(4," ")}-{str(int(ubounds[i])).rjust(4," ")}')
        i += 1
    filter_id = range(len(filter_name))
    filter_list = list(zip(filter_id, filter_name))

    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))

    if request.method == 'POST':
        form = cardStatsForm(request.POST)
        if form.is_valid():
           pass # eventually do something
        else:
           pass # eventually do something else
    else:
        form = cardStatsForm(filter_list, sort_list)
Вернуться на верх