【发布时间】:2020-06-04 02:27:21
【问题描述】:
我的 Django 博客有以下 models.py,我创建了以下 views.py 来为我的 URL 参数传递 slug 的值。
但是,我正在努力在视图中创建模型以从 Category 类中获取其他数据(人物和描述)。
我自己尝试了一些模式,但无法将它们传递给 HTML。 (总是出错或不显示)
你能告诉我如何解决这个问题吗?
models.py
class Category(models.Model):
person = models.CharField(max_length=20)
description = models.TextField()
slug = models.SlugField()
def __str__(self):
return self.person
views.py
def blog_category(request, category):
posts = Post.objects.filter(categories__slug__contains=category).order_by("-created_on").distinct()
context = {"category": category, "posts": posts}
return render(request, "blog_category.html", context)
HTML(Localhost:8000/slug)
{{ person }}
{{ description }}
这是我的models.py的完整代码
class Category(models.Model):
person = models.CharField(max_length=20)
description = models.TextField()
slug = models.SlugField()
def __str__(self):
return self.person
class Recommender(models.Model):
recommender_name = models.CharField(max_length=20)
slug = models.SlugField()
def __str__(self):
return self.recommender_name
class Post(models.Model):
book_title = models.CharField(max_length=255)
author = models.CharField(max_length=255)
book_link = models.CharField(max_length=255)
recommenders = models.ForeignKey("Recommender", on_delete=models.CASCADE,)
source = models.TextField()
source_link = models.CharField(max_length=255)
created_on = models.DateTimeField(auto_now_add=True)
last_modified = models.DateTimeField(auto_now=True)
categories = models.ManyToManyField("Category", related_name="posts")
slug = models.SlugField()
def __str__(self):
return self.book_title
【问题讨论】:
-
你也可以展示你的
Post模型类吗? -
@ArunT 我已经更新了我的问题。我尝试了您在此处询问之前删除的内容,但没有显示任何内容。
-
我快速阅读了您的两个问题,因此错过了您的模型类的名称。给我一点时间,我会给你正确的方法
-
我已经更新了答案,因为你使用的是 manytomany 字段,你将在 Post.categories 中多了一个列表,所以你需要两个 for 循环。