Swe*_*dar 1 python django django-models django-views
我有一个模型叫这样的人
class person(models.Model):
choice1 = ("a","DisplayNameA", "b", "DisplayNameB")
choice1_field = models.CharField(max_length=1, choices=choice1)
choice2 = ("c","DisplayNameC", "d", "DisplayNameD")
choice2_field = models.CharField(max_length=1, choices=choice2)
# and so on, there are many fields like these
Run Code Online (Sandbox Code Playgroud)
之后,我尝试在我的视图中生成 CSV 文件
我可以循环遍历我需要的所有字段,然后像这样动态访问值
getattr(person_object, field_name)
Run Code Online (Sandbox Code Playgroud)
然而,这会返回“a”、“b”等。
我知道我可以使用 访问显示名称get_FOO_display(),其中 foo 是字段的名称。但是,由于字段的检索是动态发生的,有没有办法动态访问字段的显示名称?无需绑定函数?
您可以传递给该函数:get_fieldname_displaygetattr
getattr(person_object, 'get_{}_display'.format(field_name))()Run Code Online (Sandbox Code Playgroud)
或者您可以使用该methodcaller包operator的:
from operator import methodcaller
mygetter = methodcaller('get_{}_display'.format(field_name))
result = mygetter(person_object)Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1319 次 |
| 最近记录: |