在没有外键关系的list_display
中显示另一个表中的列,可以通过使用list_select_related
和list_per_page
两个属性来实现。
list_select_related
属性:该属性用于指定在list_display
中显示的字段所在的表。通过在ModelAdmin
中设置list_select_related
属性为True,可以告诉Django在查询数据时使用select_related
方法,从而在一次数据库查询中获取相关联的数据。list_per_page
属性:该属性用于指定每页显示的记录数。通过在ModelAdmin
中设置list_per_page
属性为一个较大的值,可以确保在显示list_display
中的字段时,相关联的数据也能够在同一页中显示。下面是一个示例代码:
from django.contrib import admin
from .models import Model1, Model2
class Model1Admin(admin.ModelAdmin):
list_display = ('field1', 'get_model2_field')
def get_model2_field(self, obj):
return obj.model2.field2
get_model2_field.short_description = 'Model2 Field2'
def get_queryset(self, request):
queryset = super().get_queryset(request)
queryset = queryset.select_related('model2')
return queryset
list_select_related = True
list_per_page = 100
admin.site.register(Model1, Model1Admin)
在上述代码中,Model1Admin
继承自admin.ModelAdmin
,并定义了list_display
属性来指定要显示的字段。其中,get_model2_field
方法用于获取Model2
表中的field2
字段的值,并在list_display
中显示为Model2 Field2
。get_queryset
方法用于在查询数据时使用select_related
方法,以获取相关联的数据。最后,通过设置list_select_related
为True和list_per_page
为一个较大的值,确保相关联的数据能够在同一页中显示。
请注意,以上示例中的代码是基于Django框架的,如果使用其他框架或编程语言,具体实现方式可能会有所不同。
领取专属 10元无门槛券
手把手带您无忧上云