Как преобразовать 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

Вернуться на верх