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

498
Visualizações
Django: obtenga datos de una clave externa

Estoy trabajando en un proyecto de Django e intento crear algunos modelos vinculados para mis datos que, según creo, funcionan, pero parece que no puedo averiguar cómo acceder a los datos vinculados.

 class One(models.Model) name = models.CharField(max_length=50) list = models.ArrayField(models.CharField(max_length=50), blank=True) def __str__(self): return self.name class Many(models.Model) name = models.CharField(max_length=50) related = models.ForeignKey(One, null=True, blank=True) def __str__(self): return self.name

Esta es la relación general que he establecido.

Lo que estoy tratando de hacer es, en una plantilla, tener acceso a una lista de todos los 'Unos', y a través de cada uno de ellos, puedo acceder a cada Muchos y sus atributos relacionados. Puedo ver cómo acceder a los atributos para un solo 'Uno', pero no cómo pasarlos todos y sus modelos 'Muchos' relacionados y los atributos relacionados para cada uno. Esencialmente, la salida que me gustaría tendría una lista desplegable con One's, y cuando se envíe, algunos Javascript usarán la lista en el modelo 'Muchos' para hacer algunas cosas.

Cualquier consejo sería muy apreciado.

about 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Si ya tiene los objetos de One clase de modelo, puede acceder a many objetos usando many_set (consulte: relaciones hacia atrás ):

 {% for one_obj in one_objs %} {% for m_obj in one_obj.many_set.all %} # do stuff with m_obj here {% endfor %} {% endfor %}

Una cosa importante a tener en cuenta aquí es que esto ejecutará una consulta de base de datos para cada m_obj . Para hacer que esto sea eficiente, puede precargar many_set con one_objs en su vista.

En su opinión, use prefetch_related :

 one_objs = One.objects.all().prefetch_related('many_set')
about 4 years ago · Santiago Trujillo Relatório

0

Se puede acceder a las búsquedas inversas a través del atributo ___set de un objeto. Entonces, para obtener todos los objetos "Muchos" para un "Uno" dado, podría hacer one.many_set

Django búsqueda inversa de claves foráneas

Con respecto al uso en una plantilla, se puede acceder a los conjuntos agregando "todos" (dado que el conjunto devuelve un conjunto de consulta, puede ejecutar consultas en él, incluso en la plantilla)

Acceda a ForeignKey establecido directamente en la plantilla en Django

Consulte la sección correspondiente de la documentación de Django: https://docs.djangoproject.com/en/dev/topics/db/queries/#following-relationships-backward

about 4 years ago · Santiago Trujillo Relatório

0

Puede usar " prefetch_related " de Django y " related_name " de Django.

Además, esta pregunta ha sido respondida aquí .

Sin embargo, esto es lo que podría querer, primero, cambie su definición de clave externa a esto:

 related = models.ForeignKey(One, null=True, blank=True, related_name='relateds')

Luego puede recuperar las claves foráneas:

 one = One.objects.get(name="TheOneYouWant").prefetch_related('relateds') manys = one.relateds
about 4 years ago · Santiago Trujillo 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