Модели Django, ссылка и хранение идентификатора модели - PullRequest
0 голосов
/ 09 апреля 2019

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

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 Ответ

0 голосов
/ 09 апреля 2019

Прежде всего удалите аргумент default из поля invoice_number и затем переопределите метод save() модели

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()
    <b>invoice_number = models.CharField(max_length=20) # changed here

    def save(self, **kwargs):
        created = not self.pk
        super().save(**kwargs)
        if created:
            self.invoice_number = f'{YEAR}/INV/000{self.pk}'
            self.save()</b>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...