2016-03-22 7 views
0

私は課金ソフトウェアを計画中です。今、法案のために、私は主キーになりたい請求書が必要です。この請求書は、顧客IDと自動増分シリアル番号の組み合わせである必要はありません。 EXのためにdjangoでカスタムコンポジットプライマリキーを作成

顧客IDが「ABC」であれば、私はこれを行うことができますどのように

はジャンゴである....法案のPKは、などなどABC1、ABC2、なりたいです。今は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) 
主キーを生成します