[英]AttributeError type object Person has no attribute id
我创建了一个编辑表单来编辑一个人的名字。 基于有关此主题的相关 Stackoverflow 答案,我更改了模型和视图,但即使更改后以下错误仍然存在:
/person/4/edit 类型对象“Person”处的 AttributeError 没有属性“id”
模型.py:
class Person(models.Model):
person_text = models.CharField(max_length=200)
pub_date = models.DateTimeField(auto_now_add=True)
网址.py
url(r'^(?P<pk>\d+)/edit/$', views.person_edit, name='person_edit'),
视图.py
def person_edit(request, pk):
obj = get_object_or_404(Person, pk=pk)
if request.method == "POST":
form = PersonForm(request.POST, instance=obj)
if form.is_valid():
obj = form.save(commit=False)
obj.name = request.person_text
obj.save()
return redirect('/person/index.html',context)
else:
form = PersonForm(instance=obj)
return render(request, 'person/edit_person.html', {'form': form})
edit_person.html
{% block content %}
<form action ="" method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Update</button>
</form>
{%endblock content %}
更新将 views.py 更改为:
def person_edit(request, pk):
Person = get_object_or_404(Person, pk=pk)
if request.method == "POST":
form = PersonForm(request.POST, instance=Person)
if form.is_valid():
Person = form.save(commit=False)
Person.name = request.POST['person_text']
Person.save()
return redirect('/person/index.html',context)
else:
form = PersonForm(instance=Person)
return render(request, 'person/edit_person.html', {'form': form})
在您的 else 子句中,您正在传递一个类 - Question,但我认为您的代码实际上具有 Person - 而不是一个实例。 您应该像在其他子句中一样传递obj
。
(下次,请发布您的实际代码和完整的回溯。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.