【问题标题】:Django query objects by subset of possible foreign keysDjango 通过可能的外键子集查询对象
【发布时间】:2020-08-23 13:45:37
【问题描述】:

我有一个查询:主题,看起来像

topics = Topic.objects.filter(top_is_published=True, top_last_used_date__range=(issue.wir_issue_date - timedelta(days=7), issue.wir_issue_date))

我想要所有将“主题”中的对象之一作为外键的文章。当我尝试使用如下查找时:

articles = News.objects.filter(top_name=topics)

或类似的东西,我收到错误“ValueError:精确查找的 QuerySet 值必须限制为使用切片的一个结果。”我已经搜索了一个示例,但我找不到。

感谢您的帮助。

class News(models.Model):
    top_name = models.ForeignKey(Topic, on_delete=models.DO_NOTHING, verbose_name = 'topic Name')
    art_title = models.CharField(max_length=200, blank=True, null=True, verbose_name = 'title')

    def __str__(self):
        return self.art_title
class Topic(models.Model):
    top_name = models.CharField(max_length=100, verbose_name = 'name')
    top_is_published = models.BooleanField(default=False, verbose_name = 'published')
    top_last_used_date = models.DateField(blank=True, null=True, verbose_name = 'Last Featured Date')

    def __str__(self):
        return self.top_name

【问题讨论】:

  • 你能添加你的模型吗?也只是一个疯狂的猜测 - 不会将topics 转换为列表帮助,即。 filter(top_name=list(topics))

标签: django


【解决方案1】:

您是否尝试检查您的文章是否是in 您的主题?

试试这个:

articles = News.objects.filter(top_name__in=topics)

【讨论】:

  • 这就是我想要的。谢谢。
猜你喜欢
  • 2014-01-08
  • 1970-01-01
  • 2021-09-21
  • 1970-01-01
  • 2017-01-02
  • 1970-01-01
  • 1970-01-01
  • 2023-02-03
  • 2015-03-09
相关资源
最近更新 更多