我需要使用ForeignKey以相反的方式访问值。我想从子模型setTimeout(function () {
$.getJSON('test.json').then(function (data) {
for (let i = 0; i < data.data.length; i++) {
$('body').append(`
<p>`+data.data[i].name+`</p>
<p>`+data.data[i].address+`</p>
<p>`+data.data[i].occupation+`</p>
`)
}
if (Notification.permission !== 'denied' || Notification.permission === "default") {
Notification.requestPermission(function (permission) {
if (permission === "granted") {
/* Insert function that checks for a change in the JSON, and sends a notification if true */
}
});
});
}, 5000);
转到父模型Category
并将值Post
抓到我的模板中
我已经尝试过title
,但对我来说却没有任何成功。
主要目的是为每个类别创建一个category.posts.title
,并在下面列出具有该类别的博客文章。
型号:
<div>
查看:
class Category(models.Model):
name = models.CharField(max_length=30)
class Post(models.Model):
slug = models.SlugField(max_length = 250, null = True, blank = True)
title = models.CharField(max_length = 250, default="Blog Post")
body = models.TextField()
created_on = models.DateTimeField(null=True)
last_modified = models.DateTimeField(null=True)
categories = models.ForeignKey('Category', related_name='posts', default="2", unique=False, on_delete=models.CASCADE)
模板
def blog_index(request):
posts = Post.objects.all().order_by('-created_on')
categories = Category.objects.all()
context = {
"posts": posts,
"categories": categories,
}
return render(request, "blog_index.html", context)
答案 0 :(得分:2)
一个Category
可能有多个帖子,您需要对其进行迭代:
category.posts.all()
在模板中:
{% for category in categories %}
{{ category.name }}
{ % for post in category.posts.all %}
{{ post.title }}
{% endfor %}
{% endfor%}
答案 1 :(得分:1)
您需要遍历每个类别中的帖子
{% for post in category.posts.all %}
<a href="{% url 'blog_detail' category.name post.slug post.pk %}">{{ post.title }}</a>
{% endfor %}
您还应该在类别查询集上使用prefetch_related,以减少访问category.posts.all
时进行的数据库查询数量,因为您不再需要帖子查询集。
def blog_index(request):
categories = Category.objects.annotate(
post_count=Count('posts')
).prefetch_related('posts')
context = {
"categories": categories,
}
return render(request, "blog_index.html", context)
添加了annotation,以获取每个类别的帖子数
{% category.post_count %}