2017-08-03 85 views
0

我的看法是這樣的:Django主鍵錯誤?

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 

我的問題是,一切都運行良好,但在我的模型我已經添加了幾個對象(防爆學生。 objects.create(name ='John')),並按時間刪除。現在發生什麼,我的模型中只有一個對象。但是,當與模板其返回主鍵來呈現網址:

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> 

其應該顯示的主鍵1,但其示出了主鍵13,因此其不能夠呈現的URL。

如果我再添對象爲學生它顯示14等所以基本上它增加每個新進入的12

回答

1

刪除對象的基值不會重新分配刪除主鍵已經存在的對象。

例如,如果刪除pk = 1的對象,pk = 2的對象將不會更改爲1.如果添加了新對象,pk將爲3,因爲它是自動創建的對象,增量計數器

這就是數據庫系統設計的方式。這絕不妨礙django應用程序的工作。如果它困擾你,你可以手動重置自動遞增計數器,保持數據不變。

mysql> ALTER TABLE <table_name> AUTO_INCREMENT = 1;