Django 创建参考号,然后在满足条件时重置计数

Django 创建参考号,然后在满足条件时重置计数,django,Django,我已经创建了一段代码,为我的系统生成了一个参考号。我可以按我想要的方式生成它。但我不知道当年份加1时如何重置它的计数 我重写了django中的save函数,因此每次单击save时,它都会为我生成引用 def save(self, force_insert=False, force_update=False): yr = datetime.now() yrnum = yr.strftime("%Y%m%d") if self.system == 'Software':

我已经创建了一段代码,为我的系统生成了一个参考号。我可以按我想要的方式生成它。但我不知道当年份加1时如何重置它的计数

我重写了django中的save函数,因此每次单击save时,它都会为我生成引用

def save(self, force_insert=False, force_update=False):
    yr = datetime.now()
    yrnum = yr.strftime("%Y%m%d")
    if self.system == 'Software':
        self.refNo = 'S%s-%03d' % (yrnum, int(self.ticketCount)) #ticketCount is a CharField that stores the count of the rows, the thing I want to reset when yrnum is added by 1.
    else:
        self.refNo = 'A%s-%03d' % (yrnum, int(self.ticketCount))
    super(tblTicket, self).save(force_insert, force_update)
它的输出是:

A20151021-001
A20151021-002
A20151021-003
然后,当年份更改为2016年时,我希望序列重置为1。像这样:

A20151021-115
A20151121-116
A20151221-117
...
A20160101-001
A20160101-002
A20160101-003

一个选项是,您可以为模型提供一个IntegerField(称为currentYear),该字段在初始化对象时将当前年份保存为整数。然后,在保存功能中,您可以执行如下检查:

year = datetime.date.today().year
if year > self.currentYear: # This means it is one year ahead of currentYear (this will occur on Jan 1st of every year)
    self.currentYear += 1 # currentYear is now the current year again.
    self.ticketCount = 1 # reset the ticket count for the new year

可以。我试试这个。我找到了一个代码,但它不会增加计数。。所以我会试试看然后再给你回复