Django показывает последние 3 символа строки в полях администратора

база данных

| id   | salary_number |
| ---  | ------------- |
| 1    | 1042          |

models.py

class user(AbstractUser):
    salary_number = models.CharField(max_length=4, unique=True, null=True, blank=True)    

    def __str__(self):
         return f'{self.salary_number[-3:]}'

admin.py

class UserAdmin(admin.ModelAdmin):
    fields = ('salary_number[-3:]',)

Я хочу, чтобы в полях администратора отображался номер зарплаты: 042 вместо 1042. Возможно ли это?

Как добавить цифру 1 к номеру_зарплаты после нажатия кнопки сохранить новую форму?

Вы можете использовать '__str__' в качестве поля:

class UserAdmin(admin.ModelAdmin):
    readonly_fields = ('__str__',)

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

class UserAdmin(admin.ModelAdmin):
    readonly_fields = ('salary_digits',)
    
    @admin.display(description='Salary digits')
    def salary_digits(self, obj):
        if obj.salary_number is not None:
            return obj.salary_number[-3:]
Вернуться на верх