Django模型:更改字段值在管理面板中呈现的方式

时间:2019-09-17 19:06:28

标签: django python-3.x

我在Django中的模型将uuid作为其主键:

class User(models.Model):
   token = models.UUIDField(primary_key=True, default=uuid.uuid4)

   def __str__(self):
        return str(self.token).replace('-', '')

,由于uuid被保存在数据库中而没有破折号(-),因此我可以使用上面代码中的__str__来使其不带有破折号。结果看起来像这样:

enter image description here

但是我该如何在管理面板中呈现值的方式做同样的事情(如何删除破折号):

https://codesandbox.io/s/material-demo-fovpo?fontsize=14

1 个答案:

答案 0 :(得分:0)

您可以这样做:

class User(models.Model):
   token = models.UUIDField(primary_key=True, default=uuid.uuid4)       
   def __str__(self):
       return str(self.token).replace('-', '')

@admin.register(User)
class UserAdmin(admin.ModelAdmin):
    fields = ('render_token',)
    readonly_fields = ('render_token',)

    def render_token(self, obj):
        return str(obj.token).replace('-', '')  # or str(obj)
    render_token.short_description = 'TOKEN'

在此处https://docs.djangoproject.com/en/2.2/ref/contrib/admin/