0

関連モデル:

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)

私はこのようなことができると思います:

ビュー.py

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

しかし、Entry には EntryView のフィールドがないため、これがどのように機能するかわかりません。

4

1 に答える 1

1

次のことができます。

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

上記の2つのモデルを使用してこれをテストしました。Entryこれは、各インスタンスのカウントで注釈が付けられたインスタンスのリストを、EntryView.ipカウントの降順 (最も人気のあるものが最初) に並べて返します。

于 2010-09-28T16:28:27.720 に答える