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

126
Visualizações
Usando BigAutoField pk de DRF en Javascript

Tengo una app de django con varios modelos, algunos con claves foráneas entre sí, nada especialmente complicado. Todos los modelos tienen un pk proporcionado automáticamente por BigAutoField, ya que eso es lo que se define en la configuración.

Ahora he agregado vistas de API usando DRF ModelViewSets para obtener json para usar en algunos javascript en el navegador. Sin embargo, cuando convierto la cadena json en un objeto javascript, el pk (el campo se llama id) se trata como un número (como se esperaba). Sin embargo, muchos de los pk son más grandes que el valor seguro máximo del número de javascript, por lo que los últimos dígitos se muestran como ceros. Esto hace que el pk sea inútil para seleccionar o comparar elementos. Soy bastante nuevo tanto en DRF como en Javascript, pero siento que este es un caso de uso muy común, por lo que creo que probablemente haya una forma aceptada de manejar esto.

Por lo que puedo decir, hay varias maneras de hacer esto:

  1. Use id = serializers.CharField() para todos los serializadores de modelos y use comparaciones de cadenas en JS.
  2. Migre todos los modelos para tener un id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) como clave principal.
  3. Use DEFAULT_AUTO_FIELD = 'django.db.models.AutoField' en su lugar, ya que nunca tendré cerca de 2147483647 entradas en ninguna tabla.

¿Es esto correcto? ¿Me estoy perdiendo de algo? ¿Cómo se manejan normalmente los paquetes en una configuración API/SPA separada?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Use id = serializers.CharField() para todos los serializadores de modelos y use comparaciones de cadenas en JS.

Sí, solo usa cadenas. Las claves primarias sustitutas nunca necesitan usarse como números en los cálculos. Esto es muy común para JSON que debe analizarse usando JSON.parse normal, no algo creado específicamente para tratar con bigints .

about 4 years ago · Juan Pablo Isaza Relatório
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