Модели Django, ссылающиеся и сохраняющие идентификатор модели

#python #django #model

#python #django #Модель

Вопрос:

У меня есть модель по порядку имен, я хочу создать поле invoice_number для этой же модели и сохранить идентификатор заказа и некоторый другой сгенерированный текст, чтобы составить номер invoice_number заказа, и я не могу понять это, я думаю, что есть короткий и аккуратный способ добиться этого, и я буду признателен за любую помощь, спасибо. Этот код выдает ошибку, что self не определен вот мой код

 import datetime
YEAR = datetime.datetime.today().year

class Order(models.Model):
    customer_contact = models.IntegerField()
    paid = models.BooleanField(default=False)
    date = models.DateTimeField(auto_now=True)
    salesman = models.CharField(db_index=True, max_length=20)
    discount = models.IntegerField(default=0)
    price =  models.IntegerField(default=0)
    customer_name = models.CharField(db_index=True, max_length=20)
    apartment_name = models.CharField(db_index=True, max_length=20)
    flat_number = models.IntegerField()
    invoice_number = models.CharField(max_length=20, 
    default=f'{YEAR}/INV/000{self.pk}')
  

Комментарии:

1. Какая ошибка возникает?

2. самость не определена

3. Ошибка имени: имя ‘self’ не определено

4. pk не известен до тех пор, пока модель не будет сохранена в базе данных, поэтому вы не можете сделать это таким образом. Сделайте invoice_number как пустое поле, а затем переопределите метод model save() для заполнения значения.

5. Лучшим решением могло бы быть, если invoice_number это вообще не поле, а свойство , которое вычисляется «на лету» из self.date.year и self.pk .