Вычисление значения поля на основе PK в Django
Цель: Установить customer_number
на рассчитанное значение b_country
+ id
+ 10000.
models.py
class Customer(models.Model):
id = models.BigAutoField(primary_key=True)
customer_number = models.CharField("Customer #", max_length=10, default=0)
b_country = models.TextField("Country", max_length=2, choices=COUNTRY_OPTIONS)
@property
def get_customer_number(self):
a = self.b_country
b = (self.id + 10000)
return a + str(b)
def save(self, *args, **kwarg):
self.customer_number = self.get_customer_number
super(Customer, self).save(*args, **kwarg)
Проблема: Когда форма отправляется для создания нового клиента (новой записи), я получаю следующую ошибку:
a 'CA'
self Ошибка форматирования: TypeError: неподдерживаемый тип(ы) операнда для +: 'NoneType' и 'int'>
Когда у меня уже есть запись (обновление информации о существующем клиенте), код работает нормально. Насколько я понимаю, он не может получить id
, поскольку все еще проверяет данные перед отправкой в модель, следовательно, нет Customer.id
, чтобы вытащить для этого случая.
Вопрос: Существует ли более чистый способ установки customer_number
, основанный на PK?