Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何有条件地排除django管理列表显示项_Python_Django_Model_Admin - Fatal编程技术网

Python 如何有条件地排除django管理列表显示项

Python 如何有条件地排除django管理列表显示项,python,django,model,admin,Python,Django,Model,Admin,我在Django admin中有一个quote模型,我为它设置了一个admin类,其中包含一些字段的列表显示。其中一个字段是“合作伙伴id”。我有多个不同的设置文件,从基本设置文件扩展到我所处的任何环境。在这些设置文件中,有一个SHOW\u PARTNER\u ID变量。如果SHOW_partner_id设置为false,我希望能够从列表显示中删除partner_id,反之亦然。我有一个方法,它为quote表中没有合作伙伴id的每一行返回一个空字符串,但我更愿意完全删除该列 class Quot

我在Django admin中有一个quote模型,我为它设置了一个admin类,其中包含一些字段的列表显示。其中一个字段是“合作伙伴id”。我有多个不同的设置文件,从基本设置文件扩展到我所处的任何环境。在这些设置文件中,有一个SHOW\u PARTNER\u ID变量。如果SHOW_partner_id设置为false,我希望能够从列表显示中删除partner_id,反之亦然。我有一个方法,它为quote表中没有合作伙伴id的每一行返回一个空字符串,但我更愿意完全删除该列

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 ''
class QuoteAdmin(admin.ModelAdmin):
列表显示=(‘日期’、‘设备型号’、‘名’、‘姓’、‘客户地址’、‘客户链接’,
“客户历史记录”、“站点名称”、“状态”、“合作伙伴id”)
def合作伙伴id(自身、obj):
从django.conf导入设置
尝试:
如果settings.SHOW\u合作伙伴:
如果是obj合作伙伴:
返回u“”。格式(obj.partner.id,obj.partner.id)
其他:
返回“”
其他:
返回“”
例外情况除外,如e:
logging.error(e)
返回“”

覆盖模型管理员的
get\u list\u display
方法。“original”(原始)只返回class属性:

只需实现任何更复杂的逻辑,如根据此处的设置添加/删除字段,例如:

def get_list_display(self, request):
    if not settings.SHOW_PARTNER:
        return self.list_display[:-1]
    return self.list_display

覆盖模型管理员的
get\u list\u display
方法。“original”(原始)只返回class属性:

只需实现任何更复杂的逻辑,如根据此处的设置添加/删除字段,例如:

def get_list_display(self, request):
    if not settings.SHOW_PARTNER:
        return self.list_display[:-1]
    return self.list_display

正如开国元勋们所希望的那样;)正如开国元勋们所希望的那样;)