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

402
Visualizações
Relación ManyToMany entre dos modelos en Django

Estoy tratando de crear un sitio web en el que los usuarios puedan agregar los cursos que están tomando. Quiero saber cómo debo agregar la relación ManyToMany. De modo que podamos incluir a todos los usuarios en un curso según el código del curso, el instructor o cualquier campo. Y también podemos obtener los cursos en los que está inscrito el usuario. Actualmente, la estructura de mi base de datos es:

 class Course(models.Model): course_code = models.CharField(max_length=20) course_university = models.CharField(max_length=100) course_instructor = models.CharField(max_length=100) course_year = models.IntegerField(('year'), validators=[MinValueValidator(1984), max_value_current_year]) def __str__(self): return self.course_code

y mi modelo de usuario:

 class Profile(AbstractUser): bio = models.TextField() image = models.ImageField(default='defaults/user/default_u_i.png', courses = models.ManyToManyField('home.Course',related_name='courses') def __str__(self): return self.username

Me preguntaba si la relación ManyToMany debería estar en el modelo de usuario o en el modelo de curso. ¿O hará alguna diferencia en absoluto?

EDITAR : para agregar un curso al objeto de publicación ahora estoy usando esta vista, pero parece que no funciona:

 @login_required def course_add(request): if request.method == "POST": form = CourseForm(request.POST or none) if form.is_valid(): course = form.save() request.user.add(course) else: form = CourseForm context = { 'form':form } return render(request,'home/courses/course_add.html', context)
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Para bases de datos relacionales, el modelo en el que defina ManyToManyField no importa. Django creará una tabla adicional con dos ForeignKey s para los dos modelos que están vinculados por ManyToManyField .

Los administradores relacionados que se agregan, etc. son toda la lógica de Django. Detrás de las cortinas, consultará la mesa en el medio.

Sin embargo, debe corregir el parámetro related_name=… [Django-doc] . El related_name especifica el nombre de la relación a la inversa , de Course a Profile en este caso. Por lo tanto, debería ser algo así como 'profiles' :

 class Profile(AbstractUser): bio = models.TextField() image = models.ImageField(default='defaults/user/default_u_i.png', courses = models.ManyToManyField('home.Course' , related_name='profiles' ) def __str__(self): return self.username

Así puedes obtener las personas que participan en un Course objeto con:

 mycourse .profiles.all()

y puedes acceder a los courses en los que un Profile está matriculado con:

 myprofile .courses.all()

Para obtener más información, consulte la sección Relaciones de muchos a muchos de la documentación .

Puede agregar un curso a los cursos de un usuario con:

 @login_required def course_add(request): if request.method == 'POST': form = CourseForm(request.POST) if form.is_valid(): course = form.save() request.user .courses.add(course) else: form = CourseForm() context = { 'form': form } return render(request,'home/courses/course_add.html', context)
over 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