Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1K
Views
¿Qué es related_name yrelated_query_name en django?

tengo un problema con el código en django framework con respecto arelated_name yrelated_query_name en django. por favor, el experto en django explica el nombre relacionado en django, el código está a continuación:

nombre_relacionado='+'

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Nombre relacionado

Django mantiene una relación hacia atrás en cada objeto para facilitar el acceso a los objetos relacionados. Suponga que tiene dos modelos llamados "Escuela" y "Estudiante" y una escuela puede tener varios estudiantes. Entonces tendrás una definición de modelo algo como esto

 class School(models.Model): name = models.CharField(max_length=55) city = models.Charfield(max_length=55) class Student(models.Model): name = models.CharField(max_length=55) school = models.ForeignKey(School)

Ahora, si tiene objetos escolares, puede acceder a todos los estudiantes de esa escuela escribiendo una consulta explícitamente.

 school = School.objects.get(id=1) # Now if need all students of this school, first thing that come in your mind would be Student.objects.filter(school=school) # But instead of this, you can access all students by school.student_set.all()

Aquí student_set es el nombre relacionado predeterminado creado por Django. Pero puede tener sus nombres relacionados personalizados como este

 class Student(models.Model): name = models.CharField(max_length=55) school = models.ForeignKey(School, related_name='students') # Now you can do school.students.all()

Carácter especial en el nombre relacionado

Si defines related_name='+' entonces la relación hacia atrás no estará disponible en el objeto y school.student_set.all() te dará un error.

Si prefiere que Django no cree una relación inversa, establezca el nombre_relacionado en '+' o termínelo con '+'. Por ejemplo, esto garantizará que el modelo Usuario no tenga una relación inversa con este modelo:

Nombre de consulta relacionada

related_query_name es similar arelated_name pero se usa en queryset.

Si necesita aplicar algún filtro en el modelo de estudiante a través de la escuela, entonces lo haría

 School.objects.filter(student__name='abc')

Pero si defines related_query_name entonces puedes hacer

 class Student(models.Model): name = models.CharField(max_length=55) school = models.ForeignKey(School, related_query_name='abc') # Now you can do School.objects.filter(abc__name='abc')

Consulte el documento para obtener más referencias: https://docs.djangoproject.com/en/3.0/ref/models/fields/

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!