2016-03-22 41 views
0

我正在计划一个计费软件。现在,对于这些账单,我需要一张账单,我也希望成为主要账单。该账单号必须是客户ID和自动递增序列号的组合。在django中创建自定义复合主键

对于离,如果客户ID为“ABC”,那么我想该法案pk为ABC1,ABC2,等等等等....

如何才能做到这一点是Django的。现在我正在使用sqlite,但是我正计划在部署期间使用MySQL。

谢谢。

回答

2

自定义保存方法,以及生成的主键

def sku(last_sku): 
    sku = last_sku[:4] 
    sku += str(int(last_sku[4:]) + 1).zfill(4) 
    return sku; 

class YourModel(models.Model): 
    sku = models.CharField(max_length=8,primary_key==True) 
    customer = models.ForeignKey(Customer) 
    ... 

    def save(self, *args, **kwargs): 
     if not self.sku: 
      customer_id = self.customer.id 
      try: 
       last = YourModel.objects.filter(customer_id = customer_id).latest('sku') 
       self.sku = sku(last.sku) 
      except YourModel.DoesNotExist: 
       self.sku = self.customer_id+"0001" 
     super(YourModel,self).save(*args,**kwargs)