Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django在url中使用Pk字段_Django - Fatal编程技术网

django在url中使用Pk字段

django在url中使用Pk字段,django,Django,我已经创建了一个pk字段(不是由模型自动创建的)。 当我想使用此pk名称(在我的案例中为school_id)时,我遇到以下错误: Generic detail view SchoolDetailView must be called with either an object pk or a slug. Request Method: GET Request URL: http://127.0.0.1:8000/basic_app/1/ Django Version: 2.0 Excep

我已经创建了一个pk字段(不是由模型自动创建的)。 当我想使用此pk名称(在我的案例中为school_id)时,我遇到以下错误:

Generic detail view SchoolDetailView must be called with either an object pk or a slug.
Request Method: GET
Request URL:    http://127.0.0.1:8000/basic_app/1/
Django Version: 2.0
Exception Type: AttributeError
Exception Value:    
Generic detail view SchoolDetailView must be called with either an object pk or a slug.
虽然我使用的是正确的pk名称(school_pk),但我在url中的模型中使用了该名称。 我的代码如下: models.py:

from django.db import models
from django.urls import reverse
class School(models.Model):
    school_pk = models.AutoField(primary_key=True)
    name = models.CharField(max_length=256)
    principal = models.CharField(max_length=256)
    location = models.CharField(max_length=256)
    def __str__(self):
        return str(self.name)
    def get_absolute_url(self):
        return reverse("basic_app:school_detail",kwargs={'school_pk':self.school_pk})
views.py:

class SchoolListView(ListView):

    model = models.School
    template_name = 'basic_app/school_list.html'


class SchoolDetailView(DetailView):
    context_object_name = 'school'
    model = models.School
    template_name = 'basic_app/school_detail.html'
URL.py:

urlpatterns = [
path('',views.SchoolListView.as_view(),name='school_list'),
path('<int:school_pk>/',views.SchoolDetailView.as_view(),name='school_detail'),]
我曾尝试使用get_object和/或get_queryset,但我相信我的做法是错误的。如果有人能帮上忙,那将是非常好的,我们将不胜感激。谢谢
注意:我不想从我的模型中省略school\u pk字段并使用自动生成的pk)。

添加
pk\u url\u kwarg='school\u pk'
以查看
SchoolDetailView
。默认情况下,它设置为
pk

class SchoolDetailView(DetailView):
    context_object_name = 'school'
    model = models.School
    template_name = 'basic_app/school_detail.html'
    pk_url_kwarg = 'school_pk'

添加
pk\u url\u kwarg='school\u pk'
以查看
SchoolDetailView
。默认情况下,它设置为
pk

class SchoolDetailView(DetailView):
    context_object_name = 'school'
    model = models.School
    template_name = 'basic_app/school_detail.html'
    pk_url_kwarg = 'school_pk'

... 最后……你是我的英雄……非常感谢……成功了……我真的很感激……我被困在这里有一段时间了day@WISAM欢迎查看
DetailView
的UML图以获取更多信息另一个问题请稍后我有另一个表(学生)…详细视图(每个学校的学生)的url是:
路径('/student/',views.StudentDetailView.as_view(),name='student_detail'),
。在本例中,我在url中有两个pk。你知道如何解决这个问题吗,因为我必须在
def get_absolute_url(self)中包含school_id:return reverse(“basic_app:student_detail”,kwargs={'student_pk':self.student_pk})
并为学校id和学生id设置pk\u url\u kwarg?@WISAM override
get\u object
方法@Anjaneyulu Batta我正在尝试使用get\u object..但似乎我做得不对。。因为我仍然有错误。。。最后……你是我的英雄……非常感谢……成功了……我真的很感激……我被困在这里有一段时间了day@WISAM欢迎查看
DetailView
的UML图以获取更多信息另一个问题请稍后我有另一个表(学生)…详细视图(每个学校的学生)的url是:
路径('/student/',views.StudentDetailView.as_view(),name='student_detail'),
。在本例中,我在url中有两个pk。你知道如何解决这个问题吗,因为我必须在
def get_absolute_url(self)中包含school_id:return reverse(“basic_app:student_detail”,kwargs={'student_pk':self.student_pk})
并为学校id和学生id设置pk\u url\u kwarg?@WISAM override
get\u object
方法@Anjaneyulu Batta我正在尝试使用get\u object..但似乎我做得不对。。因为我仍然有错误