这是在被拦截的表单实例的上下文中。我需要获取我可以的字段列表。但是我无法仅获取图像字段。
这是我使用的代码:
list_of_image_fields = [x.name for x in instance._meta.fields if type(x) == 'django.db.models.fields.files.ImageFieldFile']
x.name正确地体现了meta.fields中实例的所有字段的每个名称。
使用if语句,我希望仅获取ImageField类型。
当我放置它而不是x.name时,“ type(x)”将返回以下内容:
<class 'django.db.models.fields.files.ImageFieldFile'> #for each field
但是它不能以我将其放入if语句(最终以一个空列表结尾)的方式起作用。
您可以在所附的图像中看到我在debugger中获得的instance._meta.fields.03(字段编号为03)
最佳答案
如果执行type(x)
,它将为您提供类型对象而不是字符串。使用功能get_internal_type
:
list_of_image_fields = [x.name for x in instance._meta.fields if x.get_internal_type() == 'ImageFieldFile']
Django doc about get_internal_type。