1

我正在构建一个tagsDjango 应用程序来显示按“受欢迎程度”排名的标签提要。

目前,我Tagmodels.py中的模型如下所示:

class Tag(models.Model):
    tag = models.CharField(max_length=64, unique=True)
    slug = models.SlugField(max_length=64, unique=True)

最终,我想在views.pyindex中查询我的视图中的标签,如下所示:

def index(request):
    context = {"tags": Tag.objects.order_by("popularity")}
    return render(request, "tags/index.html", context)

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

我应该popularity在模型中添加一个字段Tag并基本上计算一个标签被使用了多少次,还是有更好、更流畅的方法来实现相同的结果?

4

2 回答 2

1

django-taggit

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

快乐编码:)

于 2020-09-05T08:31:31.470 回答
1

#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 %}
于 2020-09-05T08:52:05.380 回答