【问题标题】:Django-nonrel sorting by foreignkeyDjango-nonrel 按外键排序
【发布时间】:2011-09-12 10:46:51
【问题描述】:

有没有办法从 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 文档告诉我使用:

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 中也不起作用。

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

提前致谢

【问题讨论】:

  • 我也有同样的问题。解决方法是使用信息创建一个文本字段,但我想避免这种情况。

标签: sql-order-by django-nonrel


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 2017-06-11
    • 2016-05-29
    • 2015-06-21
    相关资源
    最近更新 更多