Python Django primery密钥错误?

Python Django primery密钥错误?,python,django-models,django-templates,django-views,Python,Django Models,Django Templates,Django Views,我有这样的看法: def Student_list(request): s = Student.objects.all() return render(request, 'test_m/test.html', {'s':s}) def Student_info(request, pk): C_Details = Student_details.objects.filter(student__pk=pk) return render(request, 'te

我有这样的看法:

def Student_list(request):

    s = Student.objects.all()
    return render(request, 'test_m/test.html', {'s':s})


def Student_info(request, pk):

    C_Details = Student_details.objects.filter(student__pk=pk)
    return render(request, 'test_m/S_info.html', {'C_Details': C_Details})
还有Models.py,如下所示:

models.py

from __future__ import unicode_literals

from django.db import models



class Student(models.Model):

    name = models.CharField(max_length=200)
    def __unicode__(self):
        return self.name


class Student_details(models.Model):

    student = models.ForeignKey(Student,on_delete=models.CASCADE)
    age = models.CharField(default= 'No Data',max_length=254)
    per = models.CharField(default= 'No Data', max_length=254)


    def __unicode__(self):
        return self.per
我的问题是,一切运行正常,但在我的模型中,我添加了几个对象(exstudent.objects.create(name='John')),并一次又一次地删除。现在,我的模型中只有一个对象。但当它将主键返回到模板以呈现URL时:

   url(r'^test_m/(?P<pk>\d)/$', views.Student_info, name='Student_info'),

  <td><a href="{% url 'Student_info' pk=s.pk %}"> </a></td> <br>
    </tr>
url(r'^test\u m/(?P\d)/$),views.Student\u info,name='Student\u info'),

它应该将主键显示为1,但将主键显示为13,因此无法呈现URL


如果我在student中添加另一个对象,它会显示14,以此类推,基本上它会将每个新条目添加到一个基值12中

删除对象不会将删除的主键重新分配给已存在的对象

例如,如果删除pk=1的对象,则pk=2的对象不会更改为1。如果你添加一个新的对象,它的主键将是3,因为它是一个自动递增计数器

这就是数据库系统的设计方式。这决不会妨碍django应用程序的工作。如果这让你很烦恼,你可以手动重置自动递增计数器,保持数据不变

mysql> ALTER TABLE <table_name> AUTO_INCREMENT = 1;
mysql>ALTER TABLE AUTO_INCREMENT=1;