Python 将 UUID 对象更改为字符串表示列表

标签 python

当使用 values_list 的 PK 检索查询集时,有 UUIDField 类型的 Django 会为您提供 UUIDField 对象列表,而不是字符串 UUID 列表。

例如,下面给了我一个查询集:

items = Item.objects.values_list('id', flat=True).filter()

print(items) 的输出是:

[UUID('00c8aa9e-2f61-4bac-320c-ab26b8fb1de9')]

但我希望该列表是 UUID 的字符串表示形式,即

 ['00c8aa9e-2f61-4bac-320c-ab26b8fb1de9']

我可以对循环中的每个对象单独执行此操作,但我想更改整个查询集。这可能吗?

我试过:

print(str(items))

最佳答案

您可以使用数据库以 Django 特定的方式解决此问题,而不是将解决方案存入内存。

Django 现在有 Cast 函数,可以从 django.db.model.functions 导入。

然后可以在查询中使用它:

from django.db.models import TextField
from django.db.models.functions import Cast


items = Item.objects.annotate(str_id=Cast('id', output_field=TextField())).values_list('str_id', flat=True)

关于Python 将 UUID 对象更改为字符串表示列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33365495/

相关文章:

python - 将平面列表转换为嵌套列表

python - 如何在 Beautiful Soup 中只获取 id 以特定值结尾的 div?

python - Bokeh hexbin - 找到每个六边形的原始索引

python - SQLAlchemy:绑定(bind)参数 0 时出错 - 可能是不受支持的类型

python - 提取单行时如何保留 Pandas 数据框身份

python - django 使用生成的密码在管理站点中注册用户

Python 类方法抛出 AttributeError

python - 复制具有特定扩展名的所有文件,同时维护目录树

python - 如何为opencv安装gstreamer 1.0 badplugin?

python - 如何测试一个矩阵是否是旋转矩阵?