упорядочить объекты по наиболее уникальным представлениям (хранящимся в другой таблице с помощью ip) в django - PullRequest
0 голосов
/ 28 сентября 2010

Похожие модели:

models.py

class Entry(models.Model):
    ...

class EntryView(models.Model):
    entry = models.ForeignKey(Entry)
    dt_clicked = models.DateTimeField(auto_now_add=True)
    ip = models.CharField(max_length=15, db_index=True, blank=True)
    host = models.CharField(max_length=64, db_index=True, blank=True)
    referer = models.CharField(max_length=64, db_index=True, blank=True)

    def __unicode__(self):
        return "%s -> %s" % (self.ip, self.entry.headline)

Думаю, я мог бы сделать что-то вроде этого:

views.py

...
popular = Entry.articles.values('ip').annotate(Count("entry_views__id")).order_by()
...

Но я не вижу, как это будет работать, поскольку в EntryView нет поля для EntryView.

1 Ответ

1 голос
/ 28 сентября 2010

Вы можете сделать следующее:

popular = Entry.objects.annotate(count = 
     Count("entryview__ip")).order_by('-count')

Я проверил это, используя две модели, которые вы дали выше.Это вернет список Entry экземпляров, помеченных счетом EntryView.ip для каждого экземпляра, упорядоченный в порядке убывания количества (сначала самый популярный).

...