Первое решение:
переопределить list_display_links
и изменить поле вручную
Это двухэтапный процесс. Во-первых, нам нужно изменить get_list_display_links
поведение по умолчанию.
Глядя на doc и source у django, вы поймете, что в конечном итоге он будет использовать первый элемент в list_display
,В вашем классе администратора:
@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
list_display = ('name', 'language', 'created_at')
list_filter = ('created_at', 'language')
list_display_links = [] #< With this, you still can add up a link to your original admin
search_fields = ('name',)
date_hierarchy = 'created_at'
ordering = ['-created_at']
def get_list_display_links(self, request, list_display):
"""
Return a sequence containing the fields to be displayed as links
on the changelist. The list_display parameter is the list of fields
returned by get_list_display().
"""
if self.list_display_links or self.list_display_links is None or not list_display:
# We make sure you still add your admin's links if you explicitly declare `list_display_links`
return self.list_display_links
else:
# We return empty list instead of `list_display[:1]`
# if no `list_display_links` is provided.
return []
Затем, используя этот ответ , вы можете настроить любой столбец.
Второе решение:
Представление «Обработка изменений»себя
В вашем классе администратора:
@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
#... same things as you have
def change_view(self, request, object_id, form_url="", extra_context=None):
#Now, you can do pretty much whatever: it's a function based view!
Я бы порекомендовал первое, так как я считаю, что администратор по умолчанию change_view
всегда полезен.