这是在被拦截的表单实例的上下文中。我需要获取我可以的字段列表。但是我无法仅获取图像字段。
这是我使用的代码:

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)python - Django过滤字段列表仅获取特定类型的字段-LMLPHP

最佳答案

如果执行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

10-07 15:58
查看更多