2017-04-03 43 views
0

的记录我有一个Django的模型如下:如何删除Django的模型

class Calculations(models.Model): 
    category = models.CharField(max_length=127) 
    make = models.CharField(max_length=127) 
    model = models.CharField(max_length=127) 
    customer = models.ForeignKey(to=Customer, null=True, blank=True) 
    data = models.TextField(null=True, blank=True) 

和用户模型如下:

class Customer(models.Model): 
    title = models.CharField(max_length=4, null=True) 
    firstname = models.CharField(max_length=30) 
    lastname = models.CharField(max_length=30) 
    email = models.EmailField(null=True) 
    address = models.CharField(max_length=80) 

我想从客户删除一个记录。我这样做如下:

Customer.objects.filter(id=some_id).delete() 

但是,删除customercalculation

我也许应该使用on_delete,因而是这样的:

customer = models.ForeignKey(to=Customer, null=True, blank=True, on_delete=models....) 

但是,我要的是:

  • 如果我删除calculation话,我想也删除客户,
  • 但如果我从customer中删除一条记录,我只希望删除该客户并删除计算中的customer_id,因此不是整个计算记录d。

任何想法该怎么做?

回答

1

要删除customer当你删除一个calculation

def delete(self, *args, **kwargs): 
    self.customer.delete() 
    super(Calculations, self).delete(*args, **kwargs) 

为了避免删除calculation当你删除一个customer

customer = models.ForeignKey(to=Customer, null=True, blank=True, on_delete=models.SET_NULL) 
+0

当然。非常明显。 – Boky