如何在代码中对 "popularity" 概念建模?
How can I model the "popularity" concept in code?
我正在构建一个 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 中实施标签。
快乐编码:)
#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 %}
我正在构建一个 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 中实施标签。
快乐编码:)
#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 %}