从Djang中的相关类访问数据

2024-09-29 06:31:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码:

class TelefoneIPInline(admin.StackedInline):
        model = MovimentoTelefoneIP
        extra = 1
        list_filter = ['nome']

class TelefoneIPAdmin(admin.ModelAdmin):
        list_display = ('mac', 'modelo', 'fornecedor', )
        list_filter = ['cliente__nome']
        search_fields = ['mac']
        inlines = [TelefoneIPInline]
        actions = [export_as_csv_action("Exportar para Excel", fields=['mac','modelo','cliente'])]

我想知道是否有一种方法可以将TelefoneIP的相关类movementotelefoneip中的字段用作list_display、list_display或actions中的“fields”中的参数。在

以下是我的模型:

^{pr2}$

谢谢。在

试着用克里斯的回答:

class TelefoneIPAdmin(admin.ModelAdmin):
        cliente = MovimentoTelefoneIP.objects.all()
        list_display = ('mac', 'modelo','get_clientes')
        search_fields = ['mac']
        list_filter = ['get_clientes']
        def get_clientes(self, obj):
                clientes = [m.cliente for m in obj.MovimentoTelefoneIP_set.all()]
                return u', '.join(clientes)
        get_clientes.short_description = 'Clientes'
        inlines = [TelefoneIPInline]
        actions = [export_as_csv_action("Exportar para Excel", fields=['mac','modelo','fornecedor'])]

Tags: actionsfieldsgetadminmacdisplayfilterlist
1条回答
网友
1楼 · 发布于 2024-09-29 06:31:30

只需在ModelAdmin上创建一个返回其值的方法:

list_display('get_related_field')
...
def get_related_field(self, obj):
    return obj.related_object.some_field
get_related_field.short_description = 'Some Field' # Column header
get_related_field.admin_order_field = 'related_object__some_field'

您可能应该补充:

^{pr2}$

这样就不会每次都生成一个查询。在

更新

不,那是不对的。你想要这样的东西:

 def get_clientes(self, obj):
    clientes = [m.cliente for m in obj.movimentotelefoneip_set.all()]
    return u', '.join(clientes)
 get_clientes.short_description = 'Clientes'

相关问题 更多 >