почему мой идентификатор не отображается в списке администраторов django? - PullRequest
4 голосов
/ 18 июня 2010

У меня есть класс Task (models.Model), и я не определил поле id явно (так как оно определяет автоматически для вас). Я проверил в базе данных, она существует для задачи. Теперь я хотел бы отобразить его в списке через свойство list_display в admin.ModelAdmin. У меня там куча вещей, только id не отображается ни для одной из моих строк. Все остальное работает отлично. Кто-нибудь знает что-нибудь особенное, что я должен сделать, чтобы получить идентификатор для отображения?

EDIT: если я определю функцию следующим образом:

def ID(self, obj):
        return obj.id

и я поместил эту функцию в list_display, она по какой-то причине будет отлично отображать идентификатор.

Большое спасибо!

Jason

Ответы [ 2 ]

4 голосов
/ 19 июня 2010

По умолчанию не отображается. Вам необходимо создать собственный класс Admin для этой модели, а затем добавить 'id' к значению list_display. Например. в любом / admin.py:

class TaskAdmin(admin.ModelAdmin):
    list_display = ['id', 'name', etc. etc] 

admin.site.register(Task, TaskAdmin)

Подробнее см. документы .

1 голос
/ 14 января 2011

Я полагаю, вы также использовали list_editable в вашем admin.ModelAdmin. Это приводит к скрытию идентификатора и является известной ошибкой: http://code.djangoproject.com/ticket/12475.

Обходной путь - указать параметр list_display_links:

class AdAdmin(admin.ModelAdmin):
    list_display = ['id', 'ad_title', 'status', 'sponsor' ... ]
    list_display_links = ['id', 'ad_title'] # forcing to display id of model
    list_editable = ['status']
    ...

Спасибо и надеюсь, это поможет.

...