【发布时间】:2016-04-12 06:38:33
【问题描述】:
我正在写一个类似项目但不同的博客,我最近开始学习 Django。所以,在我的应用程序中,我们也有类别和标签。现在有一个 Entry 模型,它与 Category 和 Tag 都具有 ManyToMany 关系。现在我正在尝试获取属于特定类别的所有条目,这是我们在博客中拥有的类似功能。
以下是我的标签和类别模型。
class CategoryQuerySet(models.QuerySet):
def category_menu(self):
return self.filter(intopmenu=True)
def top_catgories(self):
return self.order_by("views")[:5]
class Category(models.Model):
name = models.CharField(max_length=50, unique=True)
views = models.IntegerField(default=0)
intopmenu = models.BooleanField(default=False)
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
slug = models.SlugField(unique=True)
objects = CategoryQuerySet.as_manager()
def save(self, *args, **kwargs):
self.slug = slugify(self.name)
super(Category, self).save(*args, **kwargs)
def __str__(self):
return self.name
class Meta:
verbose_name = "Entry Category"
verbose_name_plural = "Entry Categories"
ordering = ["created"]
class Tag(models.Model):
name = models.CharField(max_length=20)
slug = models.SlugField(max_length=200, unique=True)
def __str__(self):
return self.slug
以下是我的入门模型。
class EntryQuerySet(models.QuerySet):
def published(self):
return self.filter(publish=True)
def most_liked(self, num):
return self.order_by("-likes")[:num]
def most_views(self, num):
return self.order_by('-views')[:num]
class Entry(models.Model):
image = models.ImageField(upload_to='entries_images/', null=True)
image_alt = models.CharField(max_length=200, blank=True)
name = models.CharField(max_length=50, blank=True)
text = models.CharField(max_length=500, unique=True)
views = models.IntegerField(default=0)
likes = models.IntegerField(default=0)
publish = models.BooleanField(default=True)
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
source = models.URLField(blank=True)
slug = models.SlugField(unique=True)
categories = models.ManyToManyField(Category)
tags = models.ManyToManyField(Tag)
objects = EntryQuerySet.as_manager()
def save(self, *args, **kwargs):
self.slug = slugify(self.name)
super(Entry, self).save(*args, **kwargs)
def __str__(self):
return self.text
class Meta:
verbose_name = "Entry"
verbose_name_plural = "Entries"
ordering = ["created"]
在我的 urls.py 中,我有以下 url 来查看属于特定类别的所有条目。
url(r'^category/(?P<category_slug>[\w\-]+)/$', views.category, name='category'),
显然,我不明白如何编写视图来检索属于特定类别或标签的所有条目的列表。任何帮助将不胜感激。我确实在网上参考了许多关于我的问题的博客文章,并且还搜索了 SO,1 是我发现的一个类似问题,但这并没有太大帮助。
【问题讨论】:
标签: python django python-3.x django-models django-views