[英]Django display ForeignKey field in Admin
我正在使用 Python(3.7) 和 Django(3) 開發一個項目,其中我已經實現了一些模型。 其中之一是ReportsModel
,它具有其他模型的ForeignKey
字段。 現在我想在ReportsModel
admin 中顯示其他 model 數據。
這是我到目前為止所嘗試的:來自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
package,這里我是如何做到的:來自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
?
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):
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.