列出所有对象ID

时间:2017-05-10 10:09:37

标签: python django python-3.x django-1.10

我有型号产品,其中主键使用代码字段 UUID 。我想要列出所有产品的ID。

我想要这样的列表:

['14431ec4-3224-480f-85e2-b541891919b1', '6e54636b-7283-4504-a16f-f54d29db26f2']

我尝试了下一个代码,但它返回了我:

[UUID('14431ec4-3224-480f-85e2-b541891919b1'), UUID('6e54636b-7283-4504-a16f-f54d29db26f2')]

models.py:

class Product(models.Model):
    code = models.UUIDField(_('Code'), primary_key=True, default=uuid.uuid4, editable=False)

views.py:

products = Product.objects.all()
product_ids = []
for product in products:
    product_ids.append(product.code)
print(product_ids)

如何解决此问题?

3 个答案:

答案 0 :(得分:3)

您可以在.values_list()对象上使用Queryset flat=True来展示模型列表codestr {{3}将每个UUID对象的字符串大小写为字符串:

map(str, Product.objects.all().values_list('code', flat=True))

另请参阅map了解UUID examples模块的典型用法。

答案 1 :(得分:1)

这只是因为它是UUID字段。如果你肯定需要它们作为字符串,只需拨打str()

product_ids = [str(product.code) for product in products]

答案 2 :(得分:0)

您可以使用uuid中的.hex获取字符串值,如下所示:

 ids = [product.uuid.hex for product in products]