Как преобразовать UUID Django в целое число в аннотате queryset?
Я пытаюсь преобразовать UUID в целые числа в аннотате.
Так, например:
Item.objects.values_list('pk', flat=True).annotate(
int_of_pk=int('pk')
)
что приводит к ошибке:
ValueError: invalid literal for int() with base 10: 'pk'
или как:
from django.db.models import IntegerField
from django.db.models.functions import Cast
Item.objects.values_list('pk', flat=True).annotate(
int_of_pk=Cast('pk', output_field=IntegerField())
)
что приводит к ошибке:
File "/path/ve/lib/python3.7/site-packages/django/db/backends/utils.py", line 84, in _execute
return self.cursor.execute(sql, params)
psycopg2.errors.CannotCoerce: cannot cast type uuid to integer
LINE 1: ...em"."uuid", ("item"."uuid")::integer ...
^
Какие-нибудь идеи у вас появились?
Ваше время очень ценится!
Вы не можете преобразовать uuid
в целое число, оно просто содержит символы, которые не могут быть целыми числами. Почему вы вообще хотите это сделать?
128 к 32 битам не подходит
так почему же это работает в python? https://stackoverflow.com/a/2104947/19414952