При сохранении формы Django, в которую был передан параметр, она возвращает сообщение об ошибке
Все работало. Возникла необходимость передать форме параметр для выбора данных из БД. Реализовал это. Визуально все работает. Но при сохранении формы возникает ошибка "TypeError at /competitions/judge_task/1/9/ Field 'id' expected a number but got <QueryDict: {'csrfmiddlewaretoken': ['znSHA5...."
Ошибка возникает в строке form = TableTaskForm(request.POST) в views.py.
form.py:
class TableTaskForm(forms.ModelForm):
def __init__(self, comp_task_id=None, *args, **kwargs):
super().__init__(*args, **kwargs)
my_list = TableTask.objects.filter(competition_task_id=comp_task_id).values_list('participant_id', flat=True)
self.fields['participant'] = forms.ModelChoiceField(queryset=Participant.objects.filter(competition__active=True).exclude(id__in=my_list))
class Meta:
model = TableTask
exclude = ("result_place", "competition_task")
views.py:
@login_required
def judge_task(request, pk, pc):
if request.method == 'POST':
form = TableTaskForm(request.POST)
if form.is_valid():
return redirect('judge_task', pk=pk, pc=pc)
else:
return redirect('judge_task', pk=pk, pc=pc)
else:
form = TableTaskForm(comp_task_id=competition_task.id)
context['form'] = form
context['fields_name'] = fields_name
return render(request, 'app_for_competitions/judge_task.html', context)
models.py:
class TableTask(models.Model):
competition_task = models.ForeignKey(CompetitionTask, on_delete=models.CASCADE)
participant = models.ForeignKey(Participant, on_delete=models.CASCADE)
points = models.IntegerField(default="", blank=True)
average_time = models.TimeField(default=time(minute=0, second=0), blank=True)
total_time = models.TimeField(default=time(minute=0, second=0), blank=True)
result_place = models.IntegerField(default=0, blank=True)
Мне кажется, что нужно как-то обработать метод POST в form.py . Я пытался проверить, не был ли передан параметр (comp_task_id равен None), но ошибка остается. Как решить эту проблему?