繁体   English   中英

AttributeError 类型对象 Person 没有属性 id

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM