Большинство "строк" модели отображаются в виде "appname.modelname", поэтому вы можете использовать эту вариацию для get_model
from django.db.models.loading import get_model
your_model = get_model ( *your_string.split('.',1) )
Часть кода django, которая обычно превращает такие строки в модель, немного сложнее. Это из django/db/models/fields/related.py
:
try:
app_label, model_name = relation.split(".")
except ValueError:
# If we can't split, assume a model in current app
app_label = cls._meta.app_label
model_name = relation
except AttributeError:
# If it doesn't have a split it's actually a model class
app_label = relation._meta.app_label
model_name = relation._meta.object_name
# Try to look up the related model, and if it's already loaded resolve the
# string right away. If get_model returns None, it means that the related
# model isn't loaded yet, so we need to pend the relation until the class
# is prepared.
model = get_model(app_label, model_name,
seed_cache=False, only_installed=False)
Мне кажется, это хороший случай для разделения этого на одну функцию в коде ядра. Однако, если вы знаете, что ваши строки в формате «App.Model», будут работать две строки выше.