我有一个问题。我正在尝试使用 django 来编辑表单。但是当我转到网址进行编辑时,例如:/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'})
}
有什么帮助吗?非常感谢!
最佳答案
您的问题是您正在使用Clasificacion.objects.get(id=id)
,但id
从未定义(并且是保留关键字/函数)。
要修复您的代码,请使用您在 View 签名中定义的 id_category
参数:
def edit_clasificacion(request, id_category):
clasificacion = Clasificacion.objects.get(id=id_category)
....
关于python - 尝试在 django 中执行表单时,int() 参数必须是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55544040/