Django admin docs表示可以将可调用指定为可在list_display
中使用的值。如果我需要通过函数参数将一些额外的上下文传递给函数,那么实现它的最佳方法是什么?
在伪代码中,我想做的是:
App realestate:
models.py:
class A(models.Model):
raw = models.TextField()
admin.py:
from utils import processing
list_display = [processing('realestate app result', True)]
应用方:
models.py:
class Person(models.Model):
raw = models.TextField()
admin.py:
from utils import processing
list_display = [processing('party app result', False)]
utils.py:
def processing(obj, short_description, allow_tags=False):
def process(obj):
# do something
pass
process.short_description = short_description
process.allow_tags = allow_tags
return process(obj)
答案 0 :(得分:3)
您不应在函数本身内指定short_description
和allow_tags
。
定义如下处理:
<强> utils.py:强>
def processing(obj):
#do something
pass
在每个ModelAdmin类上,执行:
class RealestateAdmin(...):
list_display = [processing,]
def processing(obj):
return utils.processing(obj)
processing.short_description = 'realestate app result'
processing.allow_tags = True
class PartyAdmin(...):
list_display = [processing,]
def processing(obj):
return utils.processing(obj)
processing.short_description = 'party app result'
processing.allow_tags = False
所以你有一个地方(utils.py)包含逻辑。 每个类都定义了要在表中显示的属性。