Django显示Admin中的ForeignKey字段

2024-05-26 09:18:55 发布

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

我正在使用Python(3.7)和Django(3)进行一个项目,我在其中实现了一些模型。其中一个是ReportsModel,它对其他模型具有ForeignKey字段。现在我想在ReportsModeladmin中显示其他模型数据

以下是我迄今为止的尝试: 来自models.py

class ReportsModel(models.Model):
    cdr_report = models.ForeignKey(CurrencyDistributionModel,
                                   on_delete=models.CASCADE, null=True, default=None)
    cme_report = models.ForeignKey(CurrencyManagementExpenditureModel,
                                   on_delete=models.CASCADE, null=True, default=None)
    cps_report = models.ForeignKey(CurrencyProcessingStorageModel,
                                   on_delete=models.CASCADE, null=True, default=None)
    cma_report = models.ForeignKey(CurrencyManagementAssetsModel,
                                   on_delete=models.CASCADE, null=True, default=None)

    def __str__(self):
        if self.cdr_report is not None:
            return self.cdr_report.RequestId
        elif self.cme_report is not None:
            return self.cme_report.RequestId
        elif self.cps_report is not None:
            return self.cps_report.RequestId
        elif self.cma_report is not None:
            return self.cma_report.RequestId

要在admin中显示ForeignKey字段,我正在使用django_reverse_admin包,下面是我如何做到的: 来自admin.py:

class ReportAdmin(ReverseModelAdmin):
    report = None
    if ReportsModel.cdr_report is not None:
        report = 'cdr_report'
    elif ReportsModel.cme_report is not None:
        report = 'cme_report'
    elif ReportsModel.cps_report is not None:
        report = 'cps_report'
    elif ReportsModel.cma_report is not None:
        report = 'cma_report'
    search_fields = ['name']
    inline_reverse = [report]
    inline_type = 'stacked'


admin.site.register(ReportsModel, ReportAdmin)

现在在管理中,它只对cdr_report有效,当我添加类型为cme_report的报告时,我正确地得到了RequestField,但是cme_report字段是空的

如何根据条件显示Inline Admin


Tags: selfreportnoneisonmodelsnotdelete
1条回答
网友
1楼 · 发布于 2024-05-26 09:18:55
class ReportAdmin(admin.ModelAdmin):
    list_display =  ("id", "someVariable" )

    def someVariable(self, obj):
        # do your logic, query or just return FK model data
        return obj.CurrencyDistributionModel.<WhateverIsYourField>


admin.site.register(ReportsModel, ReportAdmin):

相关问题 更多 >