Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

266
Visualizações
¿Por qué Django no ajusta [] o SELECT a ARRAY en caso de usar el campo Array?

Por ejemplo, tengo una consulta como:

 Chat.objects.filter(users__contains=[user.pk]).filter(users__contained_by=mentors.values_list('pk', flat=True))

Esto se convierte en tal consulta:

 SELECT "chat_chat"."created_at", "chat_chat"."updated_at", "chat_chat"."id", "chat_chat"."users" FROM "chat_chat" WHERE ("chat_chat"."users" @> [1]::integer[] AND "chat_chat"."users" <@ (SELECT V0."id" FROM "users_user" V0 INNER JOIN "users_userrequest_mentors" V1 ON (V0."id" = V1."user_id") WHERE V1."userrequest_id" IN (SELECT U0."id" FROM "users_userrequest" U0 WHERE U0."user_id" = 1))::integer[])

Si ejecuto esta consulta, me enfrentaré al problema de la transmisión.

no se puede convertir entero a entero[]

Pero la documentación de Postgres dice que las matrices deben usarse como ARRAY[1,2,...,4]
Así que he envuelto [1] y (SELECCIONAR ...) a ARRAY como

 SELECT "chat_chat"."created_at", "chat_chat"."updated_at", "chat_chat"."id", "chat_chat"."users" FROM "chat_chat" WHERE ("chat_chat"."users" @> ARRAY[1]::integer[] AND "chat_chat"."users" <@ ARRAY(SELECT V0."id" FROM "users_user" V0 INNER JOIN "users_userrequest_mentors" V1 ON (V0."id" = V1."user_id") WHERE V1."userrequest_id" IN (SELECT U0."id" FROM "users_userrequest" U0 WHERE U0."user_id" = 1))::integer[])

Y todo funciona bien.
Tengo curiosidad por saber por qué Django (o psycopg2) se salta este envoltorio. ¿Hay algún significado especial para tal comportamiento?

over 4 years ago · Santiago Trujillo
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda