1

私は単純なモデルを持っています:

class News(models.Model):

    title = models.CharField(max_length=255, verbose_name=_("title"))
    content = models.TextField(default='', verbose_name=_("content"))
    panel = models.CharField(max_length=50, default='', verbose_name=_("panel"))
    created = TzDateTimeProperty(auto_now_add=True, verbose_name=_("date created"))
    lastmodified = TzDateTimeProperty(auto_now=True, verbose_name=_("date modified"))

最近の5つのニュースレコードを取得したいのですが、Google App Engine DBクエリセットを使用すると、次の簡単な方法で5つの最近のレコードを取得できることがわかります。

results = News.all().filter(panel = panel).order('created').fetch(5)

DjangoをGoogleAppEngineで実行している場合、次のことを行う必要があります。

results = News.objects.filter(panel = panel).order_by('created')[:5]

ただし、ニュースレコードがない場合は、例外がスローされます。それをcatch例外でラップすることはできますが、Django内でクエリ結果を制限するための適切で最適化された方法は何ですか?

4

1 に答える 1

1

あなたはこのようなことをすることができます

results = News.objects.filter(panel = panel).order_by('created')
if results is not None:
   new_results = results[:5]
于 2011-05-24T04:47:49.627 に答える