Вычисление значения поля на основе ПК в DjangoPython

Программы на Python
Anonymous
Вычисление значения поля на основе ПК в Django

Сообщение Anonymous »

Цель: установить для параметра 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'>

Когда у меня уже есть запись (обновляемая и существующая информация о клиенте), код работает нормально. Насколько я понимаю, он не может получить идентификатор, поскольку он все еще проверяет данные перед отправкой в ​​модель, поэтому для этого экземпляра нет Customer.id, который можно получить.
Вопрос: существует ли более чистый способ установки customer_number на основе PK?

Подробнее здесь: https://stackoverflow.com/questions/687 ... -in-django

Вернуться в «Python»