gpt4 book ai didi

python - 错误通用详细 View 必须使用对象 pk 或 slug 调用,即使使用 pk

转载 作者:太空宇宙 更新时间:2023-11-04 07:34:01 27 4
gpt4 key购买 nike

我正在尝试更新具有外键字段的 View 的记录,因此出现错误,因为我尝试更新没有外键字段的另一个模型并且效果很好。

还有其他类似的问题,但就我而言,我通过了 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>

模型.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在 View 中。

class updatestudent(UpdateView):
model = Student
form_class = forms.studentform
template_name = "temp/updatestudent.html"

pk_url_kwarg = 'studentpk'

请注意,在 Python 中,推荐的样式是将基于类的 View 命名为 UpdateStudent,将表单类命名为 StudentForm

关于python - 错误通用详细 View 必须使用对象 pk 或 slug 调用,即使使用 pk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40706604/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com