Django-Python. Определить тип объекта класса регулярным выражением
Необходимо сопоставить тип объекта модели во вспомогательном функционале модуля service. Простым способом, конесно, было бы
result = type(obj) is MyModel
но импорт MyModel из модуля models в service невозможен. Приходится искать соответствие в текстовом выводе типа объекта:
result = 'MyModel' in str(type(t))
но такой способ весьма не надёжен, т.к. искомый текст может встетиться не только, как класс модели.
Пытаюсь реализовать это с помощью регулярного выражения:
import re
result = re.match(r'.MyModel$', str(type(t))
например, проверить из "<class '__main__.MyModel'>"
но
result = None
Как можно лаконично это выполнить?
Ответы (1 шт):
Сравнивать типы классы с помощью строк, некорректно. Если нет возможности импортировать модель в service, то нужно просто сделать третий файл, в который вы импортируете вашу модель.
from models import MyModel
def is_my_model_instance(some_obj):
b = isinstance(some_obj, MyModel) # используйте встроенную функцию
return b
#В файле service
from my_file import is_my_model_instance
# ...
b = is_mi_model_instance(some_object)
# ...