如何在代码中对 "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-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 %}