检索为模型字段提供动力的类的名称

时间:2013-03-18 15:08:36

标签: django django-1.3

我正在处理某些django代码中的一些边缘情况,而且我遇到的问题只有在涉及特定字段时才会遇到。

我希望能够检测模型用于字段的类,并根据结果丢弃到备用逻辑中。

我尝试在字段实例上使用get_internal_type(),但它只返回"BooleanField"而不是预期的"ModifiedField"

自定义字段类型:

class ModifiedField(models.BooleanField):
    def __init__(self, *args, **kwargs):
        kwargs['editable'] = False
        models.BooleanField.__init__(self, *args, **kwargs)

    def pre_save(self, model_instance, add):
        value = getattr(model_instance, self.attname)

        if add:
            return True
        elif value == 2:
            return False
        else:
            return True

型号:

class TemplateItem(models.Model):
    uuid = UUIDField(primary_key=True)
    name = models.CharField(null=False, blank=True, max_length=255)
    image = models.ImageField(_('Image'), upload_to=_template_image_upload_path,
                              storage=item_fs, null=True, blank=True)
    is_modified = ModifiedField()

2 个答案:

答案 0 :(得分:1)

您是否尝试过 ._ 名称 _ ??

g = TemplateItem.objects.get(id=1)
g.__class__.__name__

答案 1 :(得分:0)

fld_cls = type(model_instance._meta.get_field(fieldname))