Как сделать автогенерацию (автозаполнение и инкремент) в админке 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