如何有条件地排除django admin列表显示项
How to conditionally exclude django admin list display items
我在我的 Django 管理中有一个引用模型,我设置了一个管理 class,其中包含一些字段的列表显示。这些字段之一是 'partner id'。对于我所处的任何环境,我都有多个不同的设置文件,它们从基本设置文件扩展而来。在这些设置文件中,有一个 SHOW_PARTNER_ID 变量。如果 SHOW_PARTNER_ID 设置为 false,我希望能够从列表显示中删除 partner_id,反之亦然。我有一个方法 returns 为没有合作伙伴 ID 的引用 table 的每一行提供一个空字符串,但我宁愿完全删除该列。
class QuoteAdmin(admin.ModelAdmin):
list_display = ('date', 'device_model', 'first_name', 'last_name', 'customer_address', 'customer_link',
'customer_history', 'site_name', 'status', 'partner_id')
def partner_id(self, obj):
from django.conf import settings
try:
if settings.SHOW_PARTNER:
if obj.partner:
return u'<a href="/admin/quote/partner/{}/">{}</a>'.format(obj.partner.id, obj.partner.id)
else:
return ''
else:
return ''
except Exception as e:
logging.error(e)
return ''
重写模型管理员的 get_list_display
方法。 'original' (source) 只是 returns class 属性:
def get_list_display(self, request):
"""
Return a sequence containing the fields to be displayed on the
changelist.
"""
return self.list_display
只需实现任何更复杂的逻辑,例如 adding/removing 基于此处设置的字段,例如:
def get_list_display(self, request):
if not settings.SHOW_PARTNER:
return self.list_display[:-1]
return self.list_display
我在我的 Django 管理中有一个引用模型,我设置了一个管理 class,其中包含一些字段的列表显示。这些字段之一是 'partner id'。对于我所处的任何环境,我都有多个不同的设置文件,它们从基本设置文件扩展而来。在这些设置文件中,有一个 SHOW_PARTNER_ID 变量。如果 SHOW_PARTNER_ID 设置为 false,我希望能够从列表显示中删除 partner_id,反之亦然。我有一个方法 returns 为没有合作伙伴 ID 的引用 table 的每一行提供一个空字符串,但我宁愿完全删除该列。
class QuoteAdmin(admin.ModelAdmin):
list_display = ('date', 'device_model', 'first_name', 'last_name', 'customer_address', 'customer_link',
'customer_history', 'site_name', 'status', 'partner_id')
def partner_id(self, obj):
from django.conf import settings
try:
if settings.SHOW_PARTNER:
if obj.partner:
return u'<a href="/admin/quote/partner/{}/">{}</a>'.format(obj.partner.id, obj.partner.id)
else:
return ''
else:
return ''
except Exception as e:
logging.error(e)
return ''
重写模型管理员的 get_list_display
方法。 'original' (source) 只是 returns class 属性:
def get_list_display(self, request): """ Return a sequence containing the fields to be displayed on the changelist. """ return self.list_display
只需实现任何更复杂的逻辑,例如 adding/removing 基于此处设置的字段,例如:
def get_list_display(self, request):
if not settings.SHOW_PARTNER:
return self.list_display[:-1]
return self.list_display