Django: недопустимый литерал для int() с базой 10: ‘csrfmiddlewaretoken’

#python #django

#python #django

Вопрос:

У меня возникает эта ошибка, когда я пытаюсь сохранить свою форму с данными. Форма:

 class EntityCreateForm(forms.ModelForm):

def __init__(self, chain, *args, **kwargs):
    super(EntityCreateForm, self).__init__(*args, **kwargs)
    self.fields['chain'] = forms.ModelChoiceField(queryset=Chain.objects.filter(pk__in = chain))

    class Meta:
        model = Entity
        fields = '__all__'
  

Вид:

 def entity_create(request):

    if request.method == 'POST':
        form = EntityCreateForm(request.POST)
        if form.is_valid():            
            form.save()
            return redirect(reverse('organisation:entity-list'))
    else:
        chain = request.session['chain']
        form = EntityCreateForm(chain)
    return render (request, 'organisation/entity_form.html', {'form':form})
  

Что с ним не так?

Комментарии:

1. Где вы используете эту форму?

2. Добро пожаловать в StackOverflow! Пожалуйста, обновите описание, чтобы показать полную обратную трассировку ошибки (в новом блоке кода).

3. Извините. Что вы имеете в виду? В шаблоне с {% csrf_token %}.

4. @VitAmin, при возникновении ошибки будет (где-то) многострочная обратная трассировка исключения , показывающая стек вызовов на момент возникновения исключения. В нем содержится важная информация о причине ошибки; пожалуйста, найдите ее и включите в описание вопроса.

5. обновлено @bignose

Ответ №1:

Вы добавили неожиданный параметр в __init__ функцию вашей формы. Если вы не используете эту форму нестандартным способом, то этот параметр будет заполнен POST данными Django. Чтобы исправить эту ошибку, вы должны либо перезаписать раздел общего представления, который вы используете для включения этих дополнительных данных, либо передать его другим способом.

Комментарии:

1. Проблема была вот в чем: форма = EntityCreateForm(request.POST) => форма = EntityCreateForm(цепочка,request.POST)