python - 尝试使用 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>
解决方案
这条线不对,你的模型没有字段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
推荐阅读
- flutter - Flutter 实时时间线进度
- php - 循环一个多维数组没有给出预期的结果
- php - 在php中用其他正则表达式模式替换正则表达式模式的最佳实践
- python - python - 如何覆盖不在__all__中的python库函数?
- python - 在日期时间索引上使用正向填充重新采样在数据帧中的最后一个条目处停止
- mongodb - 带有 @Testcontainers 的 Mongo 驱动程序,在测试成功运行后抛出异常
- c++ - 模板实例化导致函数膨胀
- angular - 测试 Angular 服务新的 BroadcastChannel
- javascript - 使用 JavaScript 将 2 个或更多新行拆分为句子?
- kibana - Vega lite 趋势指标