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;