如何在代码中建模“流行”概念?

Posted

技术标签:

【中文标题】如何在代码中建模“流行”概念?【英文标题】:How can I model the "popularity" concept in code? 【发布时间】:2020-12-24 08:02:31 【问题描述】:

我正在构建一个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 字段并基本上计算一个标签已使用了多少次,或者是否有更好、更流畅的方法来实现相同的结果?

【问题讨论】:

请从intro tour 重复on topic 和how to ask。这是一个循环语义问题:你说你想为“流行”建模,但你想让我们为你定义它?您对“流行”的其他解释的研究在哪里?正如给定的那样,这是基于意见的,对于 Stack Overflow 来说过于宽泛。 【参考方案1】:

django-taggit

您可以实现 django-taggit 或阅读文档,然后您将了解如何在 django 中实现标签。

快乐编码:)

【讨论】:

【参考方案2】:

#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 %

【讨论】:

以上是关于如何在代码中建模“流行”概念?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 RAII 对套接字进行建模

实例初涉业务的时候,概念建模是如何快速帮助我们理解业务的?

商品建模

大数据开发实战:维度建模1-相关概念

层次建模的概念

业务领域建模Domain Modeling