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)