Как получить имя из id ForeignKey в django?
Выпуск
Когда я вызываю {{cats}} я получаю id, Как я могу получить название категории в том же месте?
Мой Html файл
{% extends 'base.html' %}
{% load static %}
{% block title %}
Blogue | {{cats}}
{% endblock %}
{% block content %}
Views.py
def CategoryView(request, cats):
category_posts = Post.objects.filter(category=cats)
return render(request, 'categories.html', {'cats':cats.title(),'category_posts':category_posts})
Urls.py
urlpatterns = [
.........
path('category/<str:cats>/', CategoryView, name='category-list'),
]
Models.py
class Category(models.Model):
name = models.CharField(max_length=255)
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('home')
class Post(models.Model):
title = models.CharField(max_length=255)
author = models.ForeignKey(User, on_delete=models.CASCADE)
body = models.TextField()
post_date = models.DateField(auto_now_add=True)
category = models.ForeignKey(Category ,max_length=60 ,default='Others', on_delete=models.CASCADE, related_name= 'cats')
def __str__(self):
return self.title + ' | ' + str(self.author)
def get_absolute_url(self):
return reverse('article-detail', args=(str(self.id)))
Я пробовал изменять с помощью класса категории, но пока не получил правильного вывода, а также пробовал использовать 'categories_post', но это тоже не помогло. Любая помощь будет оценена по достоинству! Заранее спасибо.
Вы можете .filter(…)
[Django-doc] с:
Post.objects.filter(category__name=cats)
Можно использовать двойное подчеркивание (__
) для поиска " сквозных" отношений.
Вы можете, например, посетить /category/programming/
, что приведет к списку Post
для категории programming
. Вы можете определить абсолютную линейку для Category
с помощью:
class Category(models.Model):
name = models.CharField(max_length=255, db_index=True)
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('category-list', kwargs={'cats': self.name})
Однако, возможно, имеет смысл работать с SlugField
[Django-doc], а не с CharField
для фильтрации по категории.
Ссылки, с которыми вам следует работать:
<a href="{% url 'category-list' post.category.name %}">