我正在构建一个tags
Django应用程序,以显示按";受欢迎程度">
目前,models.py中的Tag
模型如下所示:
class Tag(models.Model):
tag = models.CharField(max_length=64, unique=True)
slug = models.SlugField(max_length=64, unique=True)
最终,我想在views.py中查询index
视图中的标签,如下所示:
def index(request):
context = {"tags": Tag.objects.order_by("popularity")}
return render(request, "tags/index.html", context)
我如何为";流行度";代码中的概念?
我应该在Tag
模型中添加一个popularity
字段,并基本上计算一个标签被使用了多少次,还是有更好、更巧妙的方法来实现相同的结果?
django taggit
您可以实现django-taggit或阅读文档,然后您将了解如何在django中实现标记。
快乐编码:(
#models.py
class Tag(models.Model):
tag = models.CharField(max_length=64, unique=True)
slug = models.SlugField(max_length=64, unique=True)
@property
def popularity(self):
return self.foo_set.count()
class Foo(models.Model):
tag = models.ManyToManyField(Tag, blank=True)
#views.py
def index(request):
context = {"tags": sorted(Tag.objects.all(), key=lambda x: x.popularity, reverse=True)}
return render(request, "tags/index.html", context)
#html
{% for tag in tags %}
{{ tag.tag }} - {{ tag.popularity }}
{% empty %}
No Tags
{% endfor %}