Могу ли я использовать 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()

Любой совет будет очень признателен. Спасибо

Вернуться на верх