【问题标题】:Django | Query filter returns more results than it should姜戈 |查询过滤器返回的结果多于应有的结果
【发布时间】:2020-11-06 17:26:01
【问题描述】:

我不确定我在这里做了什么,但是当我尝试过滤我的数据库时,我得到的结果比我应该得到的要多。我正在尝试获取共享同一季 ID 的剧集列表。

Screen shot of Database

我过滤了 1 个 franchies_item_name_id = 67 的条目(通常我是从其他地方得到这个,但尝试解决我刚刚输入数字的问题)。

franchies_name_id = 2 的 3 个条目,在这种情况下我不关心。

episodes_query = Episides.objects.filter(franchies_item_name_id=67)
            print(f'tv_item.id {tv_item.id}')
            print(f'episodes_query {episodes_query}')

我得到的是所有具有 franchies_name_id = 2 的项目

tv_item.id 67
episodes_query <QuerySet [<Episides: Episides object (3)>]>

我确定我在这里做了一些愚蠢的事情,但不是最愚蠢的。

如果 franchies_item_name_id = 5 则可以正常工作

【问题讨论】:

  • 好吧,你只能得到一项:主键为3。
  • 3不是元素个数,而是一个元素,主键3。

标签: python django database filter


【解决方案1】:

3不是元素个数,而是一个元素,主键3。事实上,模型的标准repr(…) 是ModelName object (<i>pk</i>)。所以QuerySet 包含一个 元素,并且那个元素的主键 是3。

如果你例如打印长度,那么元素的数量:

print(len(episodes_query))  # 1

或者如果你迭代它:

for item in episodes_query:
    print('item')

它将打印一次item。

【讨论】:

  • 啊,我明白你的意思了。在这种情况下,我认为我的问题与我的 HTML 有关,因为我在那里得到了所有 3 个结果。我看看我能不能锻炼出来
  • 找到了。我稍后将数据附加在一起,而不是将结果发送到类以在循环中弄乱。非常感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 2012-01-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-14
  • 2016-12-21
  • 2021-01-13
  • 2015-05-29
相关资源
最近更新 更多