2015-10-21 55 views
0

我已经创建了一段代码,我的系统生成编号。我可以按照我想要的方式生成它。但我没有想法如何重置时年由1创建一个参考号码,然后当条件满足,复位计数

加入我重写Django的保存功能所以每次我打的时间保存,它会为我参考它的票。

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 

然后当打之年的变化,我想序列重置为1。像这样:

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

回答

0

一个选项是,你可以给初始化对象时,既节约了本年度为整数模型的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 
+0

好的。我会试试这个。我发现了一个代码,但它不会增加计数。所以我给这个一杆和送还给你 – predator