Django 管理员覆盖显示的字段值

2024-01-16

我有以下型号:

class Model(models.Model):

    creator = models.ForeignKey(User,related_name='com_creator',on_delete=models.SET_NULL, blank=True, null=True)
    username = models.CharField(max_length=60,default="")
    created = models.DateTimeField(auto_now_add=True)
    body = models.TextField(max_length=10000,default=" ")
    subtype = models.CharField(_("SubType"),max_length=100)
    typ = models.CharField(_("Type"),max_length=50)
    plus = models.ManyToManyField(User,related_name='com_plus', verbose_name=_('Plus'), blank=True)
    is_anonymous = models.BooleanField(_('Stay Anonymous'), blank=True, default=False)

typ 和 subtype 中的值是代码,例如:“6_0_p”(因为原始值非常长,所以我使用代码和字典来转换为人类可读的形式)。

问题:如何在 django admin 中拦截这些值并将其转换为人类可读的形式?

这是我到目前为止所尝试的:

class ModelAdmin(admin.ModelAdmin):
    model = Model
    extra = 1
    exclude = ("username","creator","plus" ) 
    readonly_fields = ('subtype','typ','is_anonymous','created')
    fields = ('body','subtype','typ')

    def typ(self, obj):
        self.typ = "ppp"
        obj.typ = "ppp"
        return "pppp"

我尝试返回对象、自身和其他一些值。我还尝试在不使用可调用函数的情况下设置该值,只需声明“typ='xxx'”。没有什么。我可能不明白这整个事情是如何运作的......

任何想法将不胜感激。


你需要创建一个readonly_field对应于您的方法名称,然后从该方法返回任何内容。

文档在这里:https://docs.djangoproject.com/en/1.11/ref/contrib/admin/#django.contrib.admin.ModelAdmin.readonly_fields https://docs.djangoproject.com/en/1.11/ref/contrib/admin/#django.contrib.admin.ModelAdmin.readonly_fields

class MyAdmin(admin.ModelAdmin):
    readonly_fields = ('my_custom_field',)

    def my_custom_field(self, obj):
        return 'Return Anything Here'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django 管理员覆盖显示的字段值 的相关文章

随机推荐