Django - Администратор пользователя - добавление групп в list_display - PullRequest
4 голосов
/ 07 марта 2011

Как мы знаем, отношения ManytoMany не могут быть перечислены в list_display.Есть ли какой-нибудь способ сделать его похожим на group1, group2 и т. Д.?

Ответы [ 2 ]

8 голосов
/ 18 октября 2012

бонус: отображение группы в качестве пользовательского фильтра:

class SBUserAdmin(UserAdmin):
    list_filter = UserAdmin.list_filter + ('groups__name',)
    list_display = ('username','custom_group', )

    def custom_group(self, obj):
        """
        get group, separate by comma, and display empty string if user has no group
        """
        return ','.join([g.name for g in obj.groups.all()]) if obj.groups.count() else ''

admin.site.unregister(User)
admin.site.register(User, SBUserAdmin)
5 голосов
/ 08 марта 2011

Я не понимаю ваш пример (group1, group2), но вы, безусловно, можете использовать любую функцию в качестве столбца в представлении списка изменений, что означает, что вы, вероятно, можете делать то, что хотите показать!

Пример:

class MyModelAdmin(admin.ModelAdmin):
    list_display = ('foo', 'bar')

    def foo(self):
        return "This column is Foo"

    def bar(self, obj):
        try:
            return obj.m2m.latest('id')
        except obj.DoesNotExist:
            return "n/a"


    # there's a few more things you can do to customize this output
    def bar(self, obj):
        return '<span style="color:red;">By the way, I am red.</span>'

    bar.short_description = "My New Column Label"
    bar.allow_tags = True
...