错误通用详细视图必须使用对象 pk 或 slug 调用,即使使用 pk
Error Generic detail view must be called with either an object pk or a slug, even with the pk
我正在尝试更新具有外键字段的视图的记录,因此出现错误,因为我尝试更新没有外键字段的另一个模型并且效果很好。
还有其他类似的问题,但就我而言,我通过了 pk。
urls.py
urlpatterns = [
url(r'^info/(?P<studentpk>\d+)/update/$', views.updatestudent.as_view(), name="updatestudent"),
]
views.py
class updatestudent(UpdateView):
model = Student
form_class = forms.studentform
template_name = "temp/updatestudent.html"
def get_success_url(self):
return reverse("courses")
updatestudent.html
<form action="" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Update" />
</form>
models.py
class Student(models.Model):
classfk = models.ForeignKey(Class)
name = models.CharField(max_length=100)
birth_date = models.DateField('Birthdate')
def __str__(self):
return self.name
错误
AttributeError: Generic detail view updatestudent must be called with either an object pk or a slug.
Django 不希望您在 URL 模式中使用 studentpk
。最简单的解决方法是改用 pk
。
url(r'^info/(?P<pk>\d+)/update/$', views.updatestudent.as_view(), name="updatestudent"),
如果你真的想使用studentpk
,那么在视图中设置pk_url_kwarg
。
class updatestudent(UpdateView):
model = Student
form_class = forms.studentform
template_name = "temp/updatestudent.html"
pk_url_kwarg = 'studentpk'
请注意,在 Python 中,推荐的样式是将基于 class 的视图命名为 UpdateStudent
,并将表单命名为 class StudentForm
。
我正在尝试更新具有外键字段的视图的记录,因此出现错误,因为我尝试更新没有外键字段的另一个模型并且效果很好。
还有其他类似的问题,但就我而言,我通过了 pk。
urls.py
urlpatterns = [
url(r'^info/(?P<studentpk>\d+)/update/$', views.updatestudent.as_view(), name="updatestudent"),
]
views.py
class updatestudent(UpdateView):
model = Student
form_class = forms.studentform
template_name = "temp/updatestudent.html"
def get_success_url(self):
return reverse("courses")
updatestudent.html
<form action="" method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Update" />
</form>
models.py
class Student(models.Model):
classfk = models.ForeignKey(Class)
name = models.CharField(max_length=100)
birth_date = models.DateField('Birthdate')
def __str__(self):
return self.name
错误
AttributeError: Generic detail view updatestudent must be called with either an object pk or a slug.
Django 不希望您在 URL 模式中使用 studentpk
。最简单的解决方法是改用 pk
。
url(r'^info/(?P<pk>\d+)/update/$', views.updatestudent.as_view(), name="updatestudent"),
如果你真的想使用studentpk
,那么在视图中设置pk_url_kwarg
。
class updatestudent(UpdateView):
model = Student
form_class = forms.studentform
template_name = "temp/updatestudent.html"
pk_url_kwarg = 'studentpk'
请注意,在 Python 中,推荐的样式是将基于 class 的视图命名为 UpdateStudent
,并将表单命名为 class StudentForm
。