如何根据字段类型获取字段名称?

时间:2019-05-17 10:55:46

标签: django django-models

我想获取字段名称并根据字段类型对其进行一些操作。

比方说,模型是:

class Model1(models.Model):
    m1 = models.FileField(...)
    m2 = models.CharField(...)
    m3 = models.IntegerField(...)

我想创建一种检测字段并将其删除的方法。

我想到了使用元字典。这是我创建的方法:


from django.db.models.fields.files import FieldFile
def method_name(instance):
    for nm, cls in instance.__dict__.items():
        if type(cls) is FieldFile:
             instance.nm.delete()

上述方法无效,因为文件字段的类型为'str'而不是文件字段。我将不胜感激。

1 个答案:

答案 0 :(得分:1)

我认为您可以为此使用_meta(如果实例是Model实例)

from django.db.models.fields.files import FileField
def method_name(instance):
    for field in instance._meta.fields:
        # field.name - this returns the field name
        if isinstance(field, FileField):
            # do something