Как сделать автогенерацию (автозаполнение и инкремент) в админке django

Я хочу сделать так, чтобы поле кода автоматически заполнялось и автоматически увеличивалось в админке django. models.py

class GeneralDocumentType(models.Model):
    code = models.CharField(max_length=10, null=False, unique=True)
    name = models.CharField(max_length=100, null=False, unique=True)
    description = models.TextField(blank=True, null=True)

    def __str__(self):
        return self.name

Я хочу показать поле кода по умолчанию=DOC001, и оно будет показывать увеличение на 1 перед добавлением данных пользователем.Как я могу этого добиться?...

Django ModelAdmin имеет поддержку get_changeform_initial_data. В вашей админке вы можете переопределить этот метод, чтобы получить значение, основанное на последней информации об идентификаторе. Например:

class YourModelAdmin(admin.ModelAdmin):
  ...
  def get_changeform_initial_data(self, request):
    # getting the latest id
    try:
        latest_document_type = GeneralDocumentType.object.latest('id')
        latest_id = latest_document_type.id + 1
    except GeneralDocumentType.DoesNotExist:
        # incase there no object yet
        latest_id = 0
        
    return {'code': f'DOC{latest_id}'}

Примечание: это работает только для adding нового объекта, ModelAdmin. Не работает для InlineModelAdmin

Вернуться на верх