我正在尝试在项目中创建一个编辑表单,但我的代码运行不正常。我找不到错误。也许有人帮助我? 我的 views.py 是:
@login_required
def szczegoly_pracownik(request, id):
link_pracownik = get_object_or_404(Cudzoziemiec, id=id)
return render(request, 'cudzoziemiec/szczegoly_pracownik.html', {'link_pracownik': link_pracownik})
@login_required
def edycja_pracownika(request, id):
link_pracownik = get_object_or_404(Cudzoziemiec, id=id)
if request.method == 'POST':
edycja_pracownika = CudzoziemiecForm(request.user, request.POST)
if edycja_pracownika.is_valid():
link_pracownik = edycja_pracownika.save(commit=False)
link_pracownik.save()
return render('szczegoly_pracownik', id=link_pracownik.id)
else:
edycja_pracownika = Cudzoziemiec(request.user)
return render(request, 'cudzoziemiec/edycja_pracownika.html', {'edycja_pracownika': edycja_pracownika})
def szczegoly_pracownik 有责任从记录中获取详细信息
当我点击“编辑”按钮上的html文件时,网址工作正常,因为将我重定向到edycja_pracownika.html,但是在edycja_pracownika.html中,我只看到按钮,没有表单。
编辑:
表单正确显示但是为空 - 不要从创建的记录中加载数据。当我点击“编辑”按钮时,Django会给我一个错误
ValueError at /konto/pracownik/edycja/
invalid literal for int() with base 10: 'edycja'
edycja_pracownika.html
{% if request.user.is_authenticated %}
<form action="." method="post">
{{ edycja_pracownika.as_p }}
{% csrf_token %}
<div class="float-right">
<p><input type="submit" value="Edytuj" ></p>
第二次编辑:
事情发生了变化。我使用了这样的观点:
@login_required
def edycja_pracownika(request, id):
link_pracownik = get_object_or_404(Cudzoziemiec, id=id)
if request.method == 'POST':
edycja_pracownika = CudzoziemiecForm(request.POST, instance=link_pracownik)
if edycja_pracownika.is_valid():
link_pracownik = edycja_pracownika.save(commit=False)
link_pracownik.save()
return render('szczegoly_pracownik', id=link_pracownik.id)
else:
edycja_pracownika = CudzoziemiecForm(request.user, instance=link_pracownik)
return render(request, 'cudzoziemiec/edycja_pracownika.html', {'edycja_pracownika': edycja_pracownika})
当我点击编辑按钮时,表单会正确加载填充字段。但是,当我单击下一个按钮编辑以确认更改时,Django会给我一个错误:
invalid literal for int() with base 10: 'edycja'
解释者在网上向我展示:
@login_required
def szczegoly_pracownik(request, id):
link_pracownik = get_object_or_404(Cudzoziemiec, id=id) ...
return render(request, 'cudzoziemiec/szczegoly_pracownik.html', {'link_pracownik': link_pracownik})
答案 0 :(得分:0)
除非您覆盖CudzoziemiecForm
的构造函数,否则它接受您要传递给表单的数据作为唯一的位置参数。这意味着使用您应拥有的用户数据初始化表单:
edycja_pracownika = CudzoziemiecForm(request.POST)
要为GET请求创建新表单,您应该:
edycja_pracownika = CudzoziemiecForm()
Django的文档提供了一些sample view code供您查看。