from django.utils.translation import gettext_lazy as _ from django.db import models from django.db.models import F from rules.contrib.models import RulesModel from outbo.apps.core.models import TimestampableDeletableMixin, SoftDeletableManager class ProjectNumberManager(SoftDeletableManager): def get_next_number(self, prefix): current = self.get_or_create(prefix=prefix)[0] value = current.value current.value = F("value") + 1 current.save() return value class ProjectNumber(TimestampableDeletableMixin, RulesModel): objects = ProjectNumberManager() all_objects = ProjectNumberManager(alive_only=False) prefix = models.CharField(max_length=4) value = models.PositiveIntegerField(default=1)