Аргумент int () должен быть строкой при попытке создать форму в django - PullRequest
1 голос
/ 06 апреля 2019

У меня проблема.Я пытаюсь сделать форму редактирования с Django.Но когда я иду на URL для редактирования, например: / adminview / edit / 1 /

я получаю сообщение:

TypeError at /adminview/edit/1/
int() argument must be a string, a bytes-like object or a number, not 
'builtin_function_or_method'
Request Method: GET
Request URL:    http://127.0.0.1:8000/adminview/edit/1/
Django Version: 2.1.5
Exception Type: TypeError

это мой urls.py:

app_name = 'adminview'

urlpatterns = [
url(r'^$', index_admin, name="adminview"),
url(r'^clasification', clasification, name="clasification"),
url(r'^edit/(?P<id_category>\d+)/$', edit_clasificacion, name="edit_clasificacion"),
]

и это часть моего файла views.py, где у меня есть функция, которую я пытаюсь построить:

 def edit_clasificacion(request, id_category):
   clasificacion = Clasificacion.objects.get(id=id)
   if request.method == 'GET':
       form = ClasificacionForm(instance=clasificacion)
   else:
       form = ClasificacionForm(request.POST, instance=clasificacion)
       if form.is_valid():
           form.save()
       return redirect('article:index')
   return render(request, 'adminview/clasification.html', {'form':form})

это мой класс forms.py:

классClasificacionForm (forms.ModelForm):

class Meta:
    model = Clasificacion

    fields = [
        'nombre_clasificacion',
        ]
    labels = {
        'nombre_clasificacion': 'Nombre de categoría',
    }
    widgets = {
        'nombre_clasificacion': forms.TextInput(attrs={'class':'form-control'})
    }

любая помощь?Большое спасибо!

1 Ответ

3 голосов
/ 06 апреля 2019

Ваша проблема в том, что вы используете Clasificacion.objects.get(id=id), но id никогда не определяется (и является зарезервированным ключевым словом / функцией).

Чтобы исправить ваш код, используйте параметр id_category, который вы определили в подписи вашего представления:

def edit_clasificacion(request, id_category):
    clasificacion = Clasificacion.objects.get(id=id_category)
    ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...