【发布时间】:2019-08-11 23:54:43
【问题描述】:
如何在 uuid 中使用 IN 运算符 - 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: ...客户端”开启(“app_subscriptions”。“client_id”=“客户... ^ 提示:没有运算符匹配给定的名称和参数类型。你可能 需要添加显式类型转换。
【问题讨论】:
-
如果有任何错误,请分享。
标签: python django python-3.x postgresql django-orm