Использование произвольных методов или атрибутов в качестве полей на объектах Django ModelAdmin? - PullRequest
11 голосов
/ 25 августа 2010

Использование Django 1.1:

Документы администратора Django описывают с использованием произвольных методов или атрибутов объекта ModelAdmin в атрибуте класса list_display.Это отличный механизм для отображения произвольной информации в списке отображения для модели.Однако, похоже, не существует аналогичного механизма для самой страницы формы изменений. Как проще всего выполнить эту полезную небольшую функцию для отображения произвольной информации, не производной от поля, на странице формы изменений 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?

Ответы [ 3 ]

21 голосов
/ 25 августа 2010

Добавьте метод также в кортеж readonly_fields.

4 голосов
/ 17 декабря 2012

Попробуйте следующее:

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')
1 голос
/ 25 августа 2010

Я делал это раньше, переопределив шаблон для формы изменений и получив доступ к пользовательским методам в модели.Использование fields просит администратора попытаться добавить поле формы для вашего метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...