【问题标题】:Django query to get next previous item by date in categoryDjango查询按类别中的日期获取下一个上一个项目
【发布时间】:2010-06-23 20:34:29
【问题描述】:

第一次发布 Stack Overflow 的海报...

我怀疑我的答案在于这个解决方案: Django Query That Get Most Recent Objects From Different Categories 但我无法“获取”Django 的 annotate() 功能。

我已经走到这一步了:

previous = Item.objects.filter(date_added__lte=item.date_added).filter(???)[0:1]

我的项目有很多类别。我试图弄清楚如何使用第二个过滤器来测试项目的当前类别(基于 url 参数)是否在第一个过滤器返回的查询集的 items.categories 中。

可以向正确的方向推动。

谢谢。 丹·J.

当然。

class Category(models.Model):
    section = models.ForeignKey(Section)
    name = models.CharField(max_length=50)
    slug = models.SlugField()
    ....

class Item(models.Model):
    categories = models.ManyToManyField(Category)
    name = models.CharField(max_length=256)
    date_added = models.DateTimeField(default=datetime.datetime.today)
    ....

【问题讨论】:

  • 恐怕需要更多细节。特别是我认为我们需要看看你的模型。
  • 我添加了模型的相关部分。为了澄清,我将有一个类别的价值。在我过滤到所有先前添加的项目后,我想进一步过滤到其类别(manytomany)字段包含我在我的视图中拥有的类别的项目。如果我处理的是 category(fk) 而不是 categories(mtm),我知道该怎么做。

标签: django annotations django-urls


【解决方案1】:

好吧,我很傻。 没有意识到它与 mtm 字段查找的“categories=category”一样简单。以为我必须检查类别是否在类别中。

previous_items = Item.objects.filter(date_added__lt=item.date_added).filter(categories=category)

【讨论】:

    猜你喜欢
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2019-09-13
    • 2016-04-05
    • 2021-06-07
    • 2021-08-03
    • 1970-01-01
    相关资源
    最近更新 更多