首页 > 解决方案 > 尝试使用 django 和 python 编辑表单

问题描述

我正在尝试通过我的编辑按钮来编辑表单。

当我单击表单中的更新按钮时,出现以下错误:

FieldError at /studentapp/editrow/72/
Cannot resolve keyword 'rowid' into field Choices are: address, course, id, name, pub_date, roll

我的回溯显示源自这一行的错误

item = get_object_or_404(Studentapp, rowid=id) this line. 

我的models.py看起来像这样:

class Studentapp(models.Model):
    name = models.CharField(max_length=100)
    roll = models.IntegerField()
    course = models.CharField(max_length=100)
    address = models.CharField(max_length=100)
    pub_date = models.DateTimeField('date published', auto_now=True)

    def __str__(self):
        return '%s %s %s %s' % (self.name, self.roll, self.course, self.address)

    def published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)

编辑

我的观点:

def editrow(request, id):
    item = get_object_or_404(Studentapp, id=id)
    if request.method=="POST":
        form = EntryForm(request.POST, instance=item)
        if form.is_valid():
            post=form.save(commit=False)
            post.save()
            return HttpResponseRedirect(reverse('studentapp:index'), id)
        else:
            form=EntryForm(instance=item)
        return render(request, 'index.html',{'form':form})
    else:
        form=EntryForm(instance=item)
        return render(request, 'index.html',{'form':form})

我的网址.py

url(r'^editrow/(?P<rowid>[0-9]+)/$', views.editrow, name='editrow'),

我用来更新条目的表格:

{% load staticfiles %}
  <form action="{% url 'studentapp:editrow' student_detail.id  %}" id="editform" method="POST">
    {% csrf_token%}

      <div class = "form-group">
    <label for = "your_name">
      Your name:
    </label>
    <input class = "form-control" id="new_name" type = "text" name="name" value="{{ student_detail.name }}" placeholder="Enter your name">
  </div>
  <div class="form-group">
    <label for = "course_name">
      Course:
    </label>
    <input id="new_course" class = 'form-control' type = "text" name="course" value="{{ student_detail.course }}" placeholder="Enter your course">
  </div>
  <div class = "form-group">
    <label for = "rollno">
      Roll No.:
    </label>
    <input id="new_rollno" type = "text" class = 'form-control' name="roll" value="{{ student_detail.roll }}" placeholder="Enter your roll number">
  </div>
  <div class = "form-group">
    <label for ="addr">
      Address:
    </label>
    <input id="new_address" type = "text" name="address" class = 'form-control' value="{{ student_detail.address }}" placeholder="Enter your address"/>
  </div>
  <input type = "submit" value="Update" id="update" class = "btn btn-success" style="font-size:18px;" />
</form>

标签: pythondjango

解决方案


这条线不对,你的模型没有字段rowid

item = get_object_or_404(Studentapp, rowid=id) this line. # WRONG
item = get_object_or_404(Studentapp, id=id) this line. # OK

你的网址应该是

url(r'^editrow/(?P<id>[0-9]+)/$', views.editrow, name='editrow'),

# url(r'^editrow/(?P<rowid>[0-9]+)/$', views.editrow, name='editrow'), # WRONG

推荐阅读