Django - 如何保存方法仅适用于新数据

时间:2017-04-03 08:28:13

标签: django

如何操作此方法仅应用于新条目,并且没有先前的条目。

在管理员中,我将添加一条记录,此方法已正确应用。但是当我编辑同一条记录时,再次应用此方法。

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

如果要在save()方法中执行某些代码,则只应检查是否存在主键。

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