2

有没有办法从 django-nonrel 的数据库中返回项目,在外键上使用“order_by”?

完整详情如下:

#模型.py
类帖子(模型。模型):
    article = models.TextField(help_text='在此处粘贴或键入 HTML')
    pub_date = models.DateField()
    ……

类标签项目(模型。模型):
    标题 = models.CharField(max_length=200)
    ……

类 TagRel(模型。模型):
    the_post = models.ForeignKey('Post')
    the_tag = models.ForeignKey('标签')

TagRel 定义 Post 和 TagItems 类之间的多对多关系。

我想获取每个标签的文章列表。

#期望输出
我的标签
-我的第一篇文章
-我的第二个帖子

我的第二个标签
- 我的另一篇文章
- 另一个帖子

到目前为止一切都很好,因为我使用以下内容过滤数据:

def 标记的帖子():
    tag_items = TagItems.objects.all()
    李=[]
    对于 tag_items 中的项目:
        tag_rel_item = TagRel.objects.filter(the_tag__pk = item.pk)
        li.append(tag_rel_item)
    返回 {'list_of_objects': li}

我正在使用 db-indexer 在 db-indexes.py 中定义查询的过滤器部分。所有这些都很好,但我想按发布日期排序我的帖子。

Django docs告诉我使用:

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

但是 django-nonrel 似乎不支持 order_by('the_tag__pub_date') 部分。

以下也适用于普通 Django:

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

这是有效的,因为帖子已经在模型中按日期排序。

但这似乎在 django-nonrel 中也不起作用。

所以我的问题是如何返回按日期排序的帖子(最新>最旧)?

提前致谢

4

1 回答 1

0

我对此进行了猜测-您使用的是ManyToManyField。我相信这是使用 App Engine 数据存储区上的 ListProperty 实现的。

请参阅数据存储文档中标记为“具有多个值的属性可能具有令人惊讶的行为”的部分: http ://code.google.com/appengine/docs/python/datastore/queries.html

这很可能是您的结果未排序的原因。GAE 本身不支持多对多关系。得到结果后,您可能必须自己对它们进行排序。

于 2012-01-12T05:46:06.960 回答