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:]