Любое из полей ModelAdmin может быть функцией, формирующей всё, что заблагорассудится. Кусок из моего кода:
@admin.register(Order)
class OrderAdmin(admin.ModelAdmin):
list_display = ('__str__', 'customer_link')
def customer_link(self, obj):
if obj.customer:
return u'<a href="{0}">{1}</a>'.format(reverse('admin:auth_user_change', args=(obj.customer.pk,)), obj.customer)
else:
return obj.customer_fio
customer_link.allow_tags = True
customer_link.admin_order_field = 'customer'
customer_link.short_description = Order._meta.get_field('customer').verbose_name.title()
И для пущей наглядности кусок модели Order:
@python_2_unicode_compatible
class Order(models.Model):
customer = models.ForeignKey(User, verbose_name=u'Заказчик', null=True, blank=True, related_name='orders')
customer_fio = models.CharField(u'ФИО заказчика', max_length=150)