2017-04-03 15 views
1

如何操作此方法僅適用於新條目並且沒有以前的條目。Django - 如何保存方法僅適用於新數據

在admin中,我將添加一條記錄,該方法正確應用。但是當我編輯相同的記錄時,此方法再次應用。

def save(self): 
    p = Product.objects.last() 
    if p: 
     self.productnumber = 1000 + p.id 
    else: 
     self.productnumber = 1000 
    super(Product, self).save() 

回答

2

如果你想在save()方法中執行一些代碼,只有對於不存在的項目你應該檢查一下主鍵是否存在。

def save(self): 
    if self.pk is None: 
     # Code for new objects 
    else: 
     # Code for existing objects 
3

有兩種方法。

1. post_save

@receiver(post_save, sender= Product) 
def my_callback(sender, instance, created, *args, **kwargs): 
    if created: 
     #new 
    else: 
     #update 

2.檢查存在主鍵

def save(self): 
    if self.pk: #or id 
     #update 
    else: 
     #new 
相關問題