2017-08-29 105 views
0

我有models.py如下之後更新的特定列,在Django模型如何創建

class members(models.Model): 
    id = models.AutoField(primary_key=True) 
    HID = models.IntegerField(blank=False,unique=True) 
    owner = models.ForeignKey(User) 
    member_name = models.CharField(max_length=25, blank=False, default='') 
    father_name = models.CharField(max_length=25, blank=False, default='') 
    wife_name = models.CharField(max_length=25, blank=False, default='') 

現在,在上述的HID值手動輸入各一次。 當有新成員插入時,我打算輸入我之前的成員HID值,之後應該完成插入操作,以便之後的所有條目都應該用HID + 1更新。

我試圖執行這與鏈接列表模型像有更多與next_HID =,但這裏的問題是我的插入是非常不像每年一個或2,但查詢更是如此,然後每次這個列表必須通過查詢創建。所以我想在插入後每次更新HID號碼。

請讓我知道我可以在Django模型每次插入用於上述目的

回答

1

它是如此簡單後運行更新查詢:

members.objects.filter(HID__gt=new_member_HID).order_by('-HID').update(HID=F('HID')+1) 

如果你正在使用基於類的從Django的REST框架的意見,那麼你可以通過重寫你的的方法create加入這一行右下方

serializer = self.get_serializer(data=request.data) 

使用HID這是在request.data

+0

我必須在models.py或views.py添加此(即「類MemberCreate(generics.CreateAPIView)) –

+0

如果你真的這樣做每一次一年左右,我只是在殼上做。 python manage.py shell ... from appname.models import members ... members.create(... – OregonTrail

+0

不,我們不能使用backedend,因爲使用這個系統的人不知道它。@oregon Trail你能讓我讓我知道在哪裏執行此更新每次插入之前更新我使用「generics.CreateAPIView」來創建API –