0
私は私の請求書のdjangoモデルを持っています。Djangoの一意の請求書番号
私は毎日(私のDjangoビュー機能で)一意の請求書番号を生成する必要があります。
例、インボイスなし、7日のために4月、2016年は次のようにしなければならない:
16040701、16040702、16040703、などどのようにこれを達成することができますか?
私は私の請求書のdjangoモデルを持っています。Djangoの一意の請求書番号
私は毎日(私のDjangoビュー機能で)一意の請求書番号を生成する必要があります。
例、インボイスなし、7日のために4月、2016年は次のようにしなければならない:
16040701、16040702、16040703、などどのようにこれを達成することができますか?
これは、請求書モデルのsave()をオーバーライドすることで行います。まず、お使いのモデルにご請求書番号のフィールドを追加します。
invoice_id = models.CharField(blank=True, max_length=8)
を次に、save()メソッドオーバーライドします。
def save(self, *args, **kwargs):
today = datetime.date.today()
today_string = today.strftime('%y%m%d')
next_invoice_number = '01'
last_invoice = Invoice.objects.filter(invoice_id__startswith=today_string).order_by('invoice_id').last()
if last_invoice:
last_invoice_number = int(last_invoice.invoice_id[6:])
next_invoice_number = '{0:02d}'.format(last_invoice_number + 1)
self.invoice_id = today_string + next_invoice_number
super(Invoice, self).save(*args, **kwargs)
をこれはあなたが捜しているフォーマットyymmdd##
を与えます。注:1日に99件以上の請求書がある場合、これは機能しません。 99以上が必要な場合は{0:02d}
を{0:03d}
に変更し、invoice_idフィールドにmax_length=9
を設定してください。これは、yymmdd###
の形式で1日あたり999の請求書に対応します。
ありがとうRob – Sayantan