【问题标题】:Django: filter returns empty resultDjango:过滤器返回空结果
【发布时间】:2019-04-30 08:58:48
【问题描述】:

我的 PostGreSQL 数据库中有下表:

          workspace_role_id           | workspace_role_name 
--------------------------------------+---------------------
 3f76103f-732a-435a-a88f-737f4a6f1b87 | Owner
 c73b7c35-237e-4e13-8269-b259c2858b71 | Admin
 a61890fc-1c29-4817-8687-30786a5db17a | User

从这个 Django 模型构建:

class WorkspaceRole(models.Model):
    class Meta:
        ordering = ("workspace_role_name",)

    workspace_role_id = models.UUIDField(primary_key=True, default=uuid.uuid4, blank=True, editable=False)
    workspace_role_name = models.CharField(max_length=64, unique=True)

    def __repr__(self):
        return f"<{self.__class__.__name__}: {self.workspace_role_name}>"

我想从 ID 中检索 workspace_role_name

然而,

的结果
WorkspaceRole.objects.filter(workspace_role_id="a61890fc-1c29-4817-8687-30786a5db17a")

是一个空查询集&lt;QuerySet []&gt;,但是当我运行时

WorkspaceRole.objects.all()

我得到正确的输出:&lt;QuerySet [&lt;WorkspaceRole: Admin&gt;, &lt;WorkspaceRole: Owner&gt;, &lt;WorkspaceRole: User&gt;]&gt;

我的过滤器做错了什么?

【问题讨论】:

  • 如果解决了您的问题,请将答案标记为正确。
  • @LuSchink 我会,但它没有,正如我在回复中澄清的那样
  • print(repr(WorkspaceRole.objects.filter(workspace_role_name='User')[0].workspace_role_id)) 的输出是什么?
  • @EndreBoth 当我运行这个时我得到UUID('a61890fc-1c29-4817-8687-30786a5db17a')
  • WorkspaceRole.objects.filter(workspace_role_id=WorkspaceRole.objects.filter(workspace_role_name='User')[0].workspace_role_id) 仍然返回一个空查询集?

标签: python django postgresql django-queryset


【解决方案1】:

升级您的searching...

import uuid
id = uuid.UUID('a61890fc-1c29-4817-8687-30786a5db17a')
WorkspaceRole.objects.filter(workspace_role_id=id)

【讨论】:

  • 好的,我试过了,但我仍然得到一个空查询集&lt;QuerySet []&gt;
  • 你用的是哪个ddbb?
  • 什么是“ddbb”?
  • 数据库(ddbb 表示复数)。对不起这个。
  • ... :/ 很奇怪。肯定是您在查询集中发送的数据类型有问题...如果您能解决,请告诉我们!
【解决方案2】:

经过与同事的一些修补,解决方案是使用:

with in_database(my_db, write=True):
    id = uuid.UUID('a61890fc-1c29-4817-8687-30786a5db17a')
    WorkspaceRole.objects.filter(workspace_role_id=id)

【讨论】:

  • 那么您正在使用带有dynamic_db_router 模块的多个数据库?这是非常重要的信息 - 你可以和你的同事一起解决这个问题。
  • 虽然一次只使用一个 db,但我们正在使用该模块,直到我的同事告诉我,我才知道
猜你喜欢
  • 2016-12-21
  • 2015-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多