2

外部キーで「order_by」を使用して、django-nonrel のデータベースからアイテムを返す方法はありますか?

詳細は次のとおりです。

#Models.py
クラス Post(models.Model):
    article = models.TextField(help_text='ここに HTML を貼り付けるか入力してください')
    pub_date = モデル.DateField()
    ....

クラス TagItems(models.Model):
    タイトル = models.CharField(max_length=200)
    ....

クラス TagRel(models.Model):
    the_post = models.ForeignKey('投稿')
    the_tag = models.ForeignKey('タグ')

TagRel は、Post クラスと TagItems クラスの間の ManytoMany 関係を定義します。

各タグの記事一覧を取得したいです。

#欲望のアウトプット
マイタグ
-私の最初の投稿
-私の2番目の投稿

私の2番目のタグ
- 私の他の投稿
- 別の投稿

以下を使用してデータをフィルタリングしているため、これまでのところすべて問題ありません。

def tagged_posts():
    tag_items = TagItems.objects.all()
    李=[]
    tag_items のアイテム:
        tag_rel_item = TagRel.objects.filter(the_tag__pk = item.pk)
        li.append(tag_rel_item)
    return {'list_of_objects': li}

db-indexer を使用して、db-indexes.py でクエリのフィルター部分を定義しています。これはすべて正常に機能しますが、投稿を公開日順に並べたいと思います。

Djangoのドキュメントでは、次を使用するように指示されています:

TagRel.objects.filter(the_tag__pk = item.pk).order_by('the_tag__pub_date')

しかし、order_by('the_tag__pub_date') の部分は、django-nonrel ではサポートされていないようです。

以下は、通常の Django でも機能します。

TagRel.objects.filter(the_tag__pk = item.pk).order_by('the_post')

これは、投稿がモデル内で日付順にソートされているため機能します。

しかし、これも django-nonrel では機能しないようです。

私の質問は、日付順 (最新>古い) に投稿を返すにはどうすればよいですか?

前もって感謝します

4

1 に答える 1

0

私はこれを推測しています - あなたは ManyToManyField を使用しています。App Engine のデータストアで ListProperty を使用して実装されていると思います。

「Properties With Multiple Values Can Have Surprising Behaviors」というデータストア ドキュメントのセクションを参照してください: http://code.google.com/appengine/docs/python/datastore/queries.html

これが、結果がソートされていないように見える理由である可能性が最も高いです。ManyToMany 関係は、GAE ではネイティブにサポートされていません。結果が戻ってきたら、おそらく自分で並べ替える必要があります。

于 2012-01-12T05:46:06.960 に答える