У меня есть модель, которая выглядит следующим образом в моей базе данных ...
Столбец 1 (Project = CharField, см. Models.py ниже)
Deathstar, BB8,Кольцо ореола, космический корабль
Колонка 2 (Tag = CharField, см. Models.py ниже)
c, cpp, cpp, много вещей
У меня естьследующие требования, которые я должен выполнить.
1 Должен сортировать столбец «Tag» от наиболее часто встречающихся до наименее встречающихся.
2 Должен удалять дубликаты (например, «cpp» в этом примере) в запросе.
Я пробовал сортировать от наиболее часто встречающихся случаев, но там говорится, что тегов 'c' больше, чем тегов 'cpp?!?!Сначала должно быть указано «cpp», затем «c».
NotesAppModel.objects.annotate(Count('tag'))
<QuerySet [<NotesAppModel: c>, <NotesAppModel: cpp>, <NotesAppModel: cpp>, <NotesAppModel: lots of stuff>]>
Я также попробовал следующее, но в нем просто указано то же самое.
NotesAppModel.objects.annotate(c=Count('tag')).order_by('-c')
Мне также нужноудалить дубликаты в моем запросе.Я знаю, что если бы это был простой список строк, я бы использовал следующую простую функцию:Но это не работает с запросами Django.Что такое путь Джанго?
def remove_dups(somelist):
seen = set()
return [x for x in somelist if not (x in seen or seen.add(x))]
models.py
class NotesAppModel(models.Model):
project = models.CharField(max_length=100, blank=True)
tag = models.CharField(max_length=100, blank=True)
def __str__(self):
return self.tag