Могу ли я использовать ContentType.objects.get в templatetags?
Я постоянно получаю эту ошибку при попытке использовать contenttype в templatetags.
django.contrib.contenttypes.models.ContentType.DoesNotExist: ContentType, соответствующий запросу, не существует.
Я пытаюсь получить объект, передавая modelname и pk как строку в simple_tag. Ниже приведены коды. У меня есть другие пользовательские фильтры в том же файле, которые работают нормально.
# in templatetags\srrp_tags.py
from django import template
from django.contrib.contenttypes.models import ContentType
register = template.Library()
@register.simple_tag
def get_object(modelname, id):
ctype = ContentType.objects.get(model=modelname) # this line trigger the error
model = ctype.model_class()
return model.objects.get(pk=id)
В моем html модель и primary являются строковыми значениями
# in templates\srrp\index.html
{% load srrp_tags %}
...
{% get_object modelname|title primary %}
Я использовал точно такой же код для Contenttype в view.py, и он получил требуемую модель без проблем.
# in view.py
class srrpListView(LoginRequiredMixin, PermissionRequiredMixin, ListView):
...
def get_queryset(self):
modelname = self.kwargs.get('modelname')
ctype = ContentType.objects.get(model=modelname) # same code
self.model = ctype.model_class()
return self.model.objects.select_related().values()
Любой совет будет очень признателен. Спасибо