Python 获取django类别中的绝对url

Python 获取django类别中的绝对url,python,django-models,categories,Python,Django Models,Categories,我想知道这个方法必须是可行的,因为我已经尝试过实现,但我不能。 事实上,我已经试着通过 python manage.py shell c=Category.objects.get(pk = 3) c.get_absolute_url #I got <bound method Category.get_absolute_url of <Category: Category2>> c.get_absolute_url() #It Doesn't work 诸如此类也许您可以

我想知道这个方法必须是可行的,因为我已经尝试过实现,但我不能。 事实上,我已经试着通过

python manage.py shell
c=Category.objects.get(pk = 3)
c.get_absolute_url
#I got <bound method Category.get_absolute_url of <Category: Category2>>
c.get_absolute_url()
#It Doesn't work

诸如此类

也许您可以提供更多关于您的模型以及您试图实现的目标的信息。类似这样的事情可能会有所帮助:

models.py

class Article(models.Model):
    category = models.ForeignKey(Category, related_name='article')
    ...
无论何时在视图中返回查询集:

def get_context_data(self, **kwargs):
    context = super(ArticleView, self).get_context_data(**kwargs)
    context['articles'] = Article.objects.all().select_related('category')
    return context
在模板中:

{% for article in articles %}
    {% for category in article.category %}
        {{ category.get_absolute_url }}/{{ category.slug }} # this will return a string: abs_url/slug
    {% endfor %}
{% endfor %}    
在此处阅读有关选择相关的信息:


您还可以看看实施经理:

最后,我克服了这个问题,提出了以下解决方案,首先,我一直想得到这样的东西 /c/slug\u category\u parent/slug\u first\u children/../last\u children。 我已决定将此解决方案放入settings.py:

cat_url= lambda c: cat_url(c.parent) + '/' +c.slug if c.parent else '/c/'+ c.sl
ABSOLUTE_URL_OVERRIDES = {
    'categories.category': lambda c: cat_url(c),
}
cat_url= lambda c: cat_url(c.parent) + '/' +c.slug if c.parent else '/c/'+ c.sl
ABSOLUTE_URL_OVERRIDES = {
    'categories.category': lambda c: cat_url(c),
}