django 在管理字段中显示字符串的最后 3 个字符

django show last 3 char of string in admin fields

数据库

| 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:]',)

def get_readonly_fields(self, request, obj=None):
        return ['salary_number'] if obj else []

我想在管理字段中显示工资号码:042 而不是 1042。这可能吗?

如何在点击保存新表格后将数字 1 添加到 salary_number?

您可以使用 '__str__' 作为字段:

class UserAdmin(admin.ModelAdmin):
    readonly_fields = (<strong>'__str__'</strong>,)

但这让人不清楚这个领域在做什么。可能最好制作一个描述这是薪水号码的最后一位数字的可调用文件:

class UserAdmin(admin.ModelAdmin):
    readonly_fields = (<strong>'salary_digits'</strong>,)
    
    @admin.display(description='Salary digits')
    def <b>salary_digits</b>(self, obj):
        if obj.salary_number is not None:
            return obj.salary_number[-3:]