Я обрабатываю некоторые случаи кросс-кода в некотором коде 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()
Собственно оп ищет * поле * Класс A модели, а не класс самой модели. –
Спасибо, я чувствую себя глупо сейчас, потому что не помню, что могу это сделать! – Jharwood
@brunodesthuilliers прав Я действительно хочу класс поля, но если у вас есть экземпляр класса, как я, то это просто случай вызова 'instance .__ class __.__ name__' – Jharwood