2016-03-22 4 views
0

Ich plane auf einer Abrechnungssoftware. Nun, für die Rechnungen brauche ich eine Rechnung - nein, die ich auch als Primärschlüssel haben möchte. Diese Rechnungsnummer muss eine Kombination aus Kundennummer und automatisch fortlaufender Seriennummer sein.Erstellen Sie benutzerdefinierte zusammengesetzte Primärschlüssel in Django

Für ex, wenn der Kunde id "ABC" ist, dann will ich die Rechnung pk ABC1, ABC2Ä, etc etc sein ....

Wie kann dies geschehen django ist. Momentan benutze ich sqlite, aber ich plane MySQL während der Bereitstellung zu verwenden.

Vielen Dank.

Antwort

2

Anpassen speichern Methode, und erzeugen die Primärschlüssel

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)