Django - Получить модель ContentType по названию модели (общие отношения)

Я думаю об этом какое-то время,

Я создаю приложение чата, в chat.models задан класс Room, однако Комната может быть связана с чем-либо в моем проекте, так как она использует общее отношение в нем внешнего ключа.

Есть ли способ узнать, какая модель связана с комнатой, зная только имя модели?

Как

ctype = 'user'

related_to_user = Room.objects.filter(content_type=ctype)

Проблема, с которой я столкнулась, заключается в следующем:

doc = get_object_or_404(Document, id=id)
# get *or create* a chat room attached to this document
room = Room.objects.get_or_create(doc)

Если я не хочу использовать модель документа, если мне нужна модель, связанная со строкой, строка, которая может быть чем угодно, без необходимости писать тонны, если нужно получить конкретную модель для конкретной строки. Есть ли способ найти модель именно этим именем?

Спасибо

Ответы

Ответ 1

http://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/#methods-on-contenttype-instances

user_type = ContentType.objects.get(app_label="auth", model="user")
user_type = ContentType.objects.get(model="user")
# but this can throw an error if you have 2 models with the same name.

Очень похоже на django get_model

from django.db.models import get_model
user_model = get_model('auth', 'user')

Чтобы использовать ваш пример:

ctype = ContentType.objects.get(model='user')
related_to_user = Room.objects.filter(content_type=ctype)