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),
}