Django admin docs表示可以将可调用对象指定为可在 list_display
中使用的值。如果我需要通过函数参数向函数传递一些额外的上下文,那么实现此目的的最佳方法是什么?
在伪代码中,我想做的是:
应用房地产:
模型.py:
class A(models.Model):
raw = models.TextField()
admin.py:
from utils import processing
list_display = [processing('realestate app result', True)]
应用方:
模型.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)
最佳答案
您不应在函数本身内指定 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)包含逻辑。 每个类都定义要在表中显示的属性。
关于python - list_display带有函数,如何传递参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14033182/