我想获取字段名称并根据字段类型对其进行一些操作。
比方说,模型是:
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'而不是文件字段。我将不胜感激。
答案 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