2016-03-22 8 views
0

Я планирую программное обеспечение для выставления счетов. Теперь, для счетов, мне нужен счет-нет, и я тоже хочу быть первичным ключом. Этот счет не должен быть комбинацией идентификатора клиента и автоматически увеличивающегося серийного номера.Создание пользовательского составного первичного ключа в django

Для экс, если идентификатор клиента «ABC», то я хочу законопроект рк быть АВС1, 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) 
Смежные вопросы