Django:得到顶级标签?

时间:2016-06-20 18:17:29

标签: python django sorting tags

我正在使用Django和django-taggit应用。现在,我按原样传递标签:

def tags_page(request):
    """A page that displays all the tags."""
    tags = Tag.objects.all()
    response = render(request, 'tags_page.html', {'tags': tags})
    return response

为了呈现包含所有这些内容的页面。我不确定它们是如何通过的,但我想先放置顶部标签,根据它们的使用时间对它们进行排序。但我不知道该怎么做。我是否以某种方式使用order_by?谢谢

2 个答案:

答案 0 :(得分:1)

假设标签存储在列表中:

sorted(lst, key=lst.count, reverse=True)

collections.Counter也有效,并且具有O(n)

的优势
counts = collections.Counter(lst)
new_list = sorted(lst, key=lambda x: -counts[x])

答案 1 :(得分:1)

实际上,例如,如果标签应用于名为Joke的模型,您可以简单地执行此操作:

<?xml version="1.0"?>
<xs:schema attributeFormDefault="unqualified"
           elementFormDefault="qualified" 
           xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Root">
<xs:complexType>
  <xs:sequence>
    <xs:element minOccurs="0" name="State">
      <xs:complexType>
        <xs:sequence>
          <xs:element minOccurs="0" name="City">
            <xs:complexType>
              <xs:sequence>
                <xs:element minOccurs="0" name="cafeID" type="xs:string" />
                <xs:element minOccurs="0" name="cafeName" type="xs:string" />
                <xs:element minOccurs="0" name="cafeState" type="xs:string" />
                <xs:element minOccurs="0" name="cafeCity" type="xs:string" />
                <xs:element minOccurs="0" name="cafeStreetName" type="xs:string" />
                <xs:element minOccurs="0" name="cafeZip" type="xs:string" />
                <xs:element minOccurs="0" name="cafeContact" type="xs:string" />
                <xs:element minOccurs="0" name="cafeEmail" type="xs:string" />
                <xs:element minOccurs="0" name="hasPickup" type="xs:string" />
                <xs:element minOccurs="0" name="hasDriveThru" type="xs:string" />
              </xs:sequence>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
    </xs:element>
  </xs:sequence>
</xs:complexType>

它运作得很好。