Django: фильтр возвращает пустой результат - PullRequest
0 голосов
/ 30 апреля 2019

В моей базе данных 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}>"

И я хочу получить workspace_role_name из идентификатора.

Однако результатом

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

является пустой набор запросов <QuerySet []>, но когда я запускаю

WorkspaceRole.objects.all()

, я получаю правильный вывод: <QuerySet [<WorkspaceRole: Admin>, <WorkspaceRole: Owner>, <WorkspaceRole: User>]>

Что я делаю не так с моим фильтром?

Ответы [ 2 ]

1 голос
/ 30 апреля 2019

Обновите ваш поиск ...

import uuid
id = uuid.UUID('a61890fc-1c29-4817-8687-30786a5db17a')
WorkspaceRole.objects.filter(workspace_role_id=id)
0 голосов
/ 30 апреля 2019

После некоторого переворота с коллегой, решение было использовать:

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