Чтобы сделать это, вы просто создаете метод в вашей Model или ModelAdmin, который возвращает соответствующий экран, который вы хотите, а затем используете это имя метода в вашем list_display
(для этого нужны имена полей или callables).
class MyModelAdmin(admin.ModelAdmin):
...
list_display = ('id', 'full_name')
...
def full_name(self, obj):
return u'%s %s' % (obj.first_name, obj.last_name)
ИЛИ в вашем Model
(лучше, если отображение полезно в других сценариях, кроме администратора, в противном случае используйте ModelAdmin
):
class MyModel(models.Model):
...
def get_full_name(self):
return u'%s %s' % (self.first_name, self.last_name)
class MyModelAdmin(admin.ModelAdmin):
...
list_display = ('id', 'get_full_name')
Если хотитеДля заказа необходимо определить admin_order_field
в методе, но вам нужно будет выбрать одно поле для использования при заказе:
def full_name(self, obj):
return u'%s %s' % (obj.first_name, obj.last_name)
full_name.admin_order_field = 'last_name'
Если вам нужно включить HTML, укажите allow_tags=True
по методу:
def full_name(self, obj):
return u'%s %s' % (obj.first_name, obj.last_name)
full_name.allow_tags = True
Наконец, Django автоматически создаст метку из имени метода;в этом случае это будет полное имя.Если вы хотите что-то другое, вы можете использовать short_description
:
def full_name(self, obj):
return u'%s %s' % (obj.first_name, obj.last_name)
full_name.short_description = "User's Full Name"