Я решил подобную проблему некоторое время назад, используя object.id/year (где object / id - это идентификатор базы данных).
Это гарантирует, что это будет уникальным, автоинкрементным (вам не нужно делатьn = n + 1
, что теоретически может привести к дублированию значений в дБ).
Вы можете сделать это путем переопределения метода save
, и единственная хитрость заключается в том, что вам сначала нужно сохранить объект (идентификатор назначен) изатем создайте id / номер года и сохраните снова (возможно, есть лучший способ сделать это, чем двойное сохранение).
def save(self, force_insert = False, force_update = False):
super(Factura, self).save(force_insert, force_update)
current_year = date.today().strftime('%y')
self.identifier = '%s/%s'%(self.id, current_year)
super(Factura, self).save(force_insert, force_update)