Python 在Django ModelAdmin对象上使用任意方法或属性作为字段?

Python 在Django ModelAdmin对象上使用任意方法或属性作为字段?,python,django,django-admin,Python,Django,Django Admin,使用Django 1.1: 在列表中的ModelAdmin对象上使用任意方法或属性显示类属性。这是一种很好的机制,可以在模型的列表显示中显示任意信息。但是,对于变更表单页面本身,似乎没有类似的机制在ModelAdmin更改表单页面上显示任意、非字段派生的信息,实现这一有用的小功能的最简单方法是什么? 所需设置的具体示例: class CustomUserAdmin(UserAdmin): def registration_key(self, obj): """Specia

使用Django 1.1:

列表中的ModelAdmin对象上使用任意方法或属性显示
类属性。这是一种很好的机制,可以在模型的列表显示中显示任意信息。但是,对于变更表单页面本身,似乎没有类似的机制在ModelAdmin更改表单页面上显示任意、非字段派生的信息,实现这一有用的小功能的最简单方法是什么?

所需设置的具体示例:

class CustomUserAdmin(UserAdmin):
    def registration_key(self, obj):
        """Special method for looking up and returning the user's registration key
        """
        return 'the_key'

    list_display = ('email', 'first_name', 'last_name', 'is_active', 'is_staff', 
                    'registration_key')  # <- this works

    fields = ('email', 'first_name', 'last_name', 'is_active', 'is_staff',
              'registration_key')  # <- this DOESN'T work?
类CustomUserAdmin(UserAdmin):
def注册密钥(自身、obj):
“”“查找和返回用户注册密钥的特殊方法
"""
返回“密钥”
列表显示=('email'、'first\u name'、'last\u name'、'is\u active'、'is\u staff',

“registration_key”)#我以前通过覆盖变更表单的模板并访问模型上的自定义方法来完成这项工作。使用
字段
要求管理员尝试为您的方法添加表单字段。

也将该方法添加到“只读字段”元组。

尝试以下操作:

class CustomUserAdminForm(forms.ModelForm):
    registration_key = forms.IntegerField()                                 

    class Meta: 
        model = User   

class CustomUserAdmin(UserAdmin):
    def registration_key(self, obj):
        """Special method for looking up and returning the user's registration key
        """
        return 'the_key'

    list_display = ('email', 'first_name', 'last_name', 'is_active', 'is_staff', 
                    'registration_key')  # <- this works

    fields = ('email', 'first_name', 'last_name', 'is_active', 'is_staff',
              'registration_key')
class CustomUserAdminForm(forms.ModelForm):
注册\u key=forms.IntegerField()
类元:
模型=用户
类CustomUserAdmin(UserAdmin):
def注册密钥(自身、obj):
“”“查找和返回用户注册密钥的特殊方法
"""
返回“密钥”
列表显示=('email'、'first\u name'、'last\u name'、'is\u active'、'is\u staff',

“注册密钥”)#我希望<代码> ReadOnyLyField在Django 1.2中是新的,现在我被困在1.1。你恐怕运气不好,在没有严重黑客攻击的情况下,在1.1没有办法做到这一点。管理模板使我充满恐惧和颤抖,但我可能不得不考虑这一点。谢天谢地,自从我提出这个问题以来,我已经摆脱了1.1的枷锁,但你已经证实这在1.1中是有效的?