Как использовать оператор IN с uuid - Django?
Модель
class Client(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
nome = models.CharField(max_length=255)
email = models.CharField(max_length=255)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.nome
class Subscription(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
vencimento = models.DateField()
client = models.OneToOneField(Client, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
Просмотр
clients = Client.objects.filter(nome__icontains=q).values_list('pk', flat=True)
subscriptions = Subscription.objects.filter(client_id__in=clients)
Я пытался использовать это для преобразования, и он все еще делаетне работает.
clients = [str(o) for o in clients]
Куда я иду не так?
Спасибо.
Я тоже пробовал это
subscriptions = Subscription.objects.filter(client__nome__icontains=q)
Запрос
SELECT "app_subscription"."id", "app_subscription"."vencimento","app_subscription"."client_id", "app_subscription"."created_at", "app_subscription"."updated_at" FROM "app_subscription" INNER JOIN "cad_client" ON ("app_subscription"."client_id" = "cad_client"."id") WHERE "cad_client"."nome" LIKE %marcelo% ESCAPE '\'
ОШИБКА
psycopg2.ProgrammingError: оператор не существует: символ меняется = uuid
оператор не существует: символ меняется = uuid LINE 1: ...client "ON (" app_subscription "." client_id "=" clien ... ^ СОВЕТ: ни один оператор не соответствует данному имени и типу (аргументам) аргументов. Возможно, вам потребуется добавить явное приведение типов.