Цель: Установить 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
на основе ПК?
Да, если вам нужен идентификатор, вы должны сначала сохранить его
@bdbd Как мне закодировать форму или функцию для сохранения, а затем запустить def save(), который я прикрепил к классу?