3
respostas

Como fazer uma ForeignKey ter mais de um elemento.

Olá, Gostaria de saber como eu faço pra estabelecer um relacionamento many-to-many(acho que é esse o nome).

Por exemplo se eu tiver uma classe Materia e outra Aluno e eu quero que cada aluno tenha chave para várias matérias em que ele está matriculado e cada Materia tenha chave para vários alunos. Caso tenha ficado confuso por favor me digam.

Obrigado

3 respostas

Basta o aluno ter uma chave estrangeira por matéria e vice versa. Qual a dificuldade?

Se vc tiver dificuldades de fazer isso dentro do Django, leia:

https://docs.djangoproject.com/en/1.10/topics/db/examples/many_to_many/

Many-to-many relationships¶

To define a many-to-many relationship, use ManyToManyField.

In this example, an Article can be published in multiple Publication objects, and a Publication has multiple Article objects:

Eu segui os passos do artigo e tals antes de vir perguntar aqui, mas sempre acontece um erro. Essa é minha classe models:

class Aluno(models.Model):
    nome = models.CharField(max_length=255, null=False)
    ra = models.CharField(max_length=10, null=False)

class Materia(models.Model):

    nome = models.CharField(max_length=255, null=False)
    numero_vagas = models.CharField(max_length=10, null=False)
    numero_alunos = models.CharField(max_length=10, null=False) 
    alunos = models.ManyToManyField(Aluno, related_name="materias")

Eu fiz o makemigrations e migrate, criei ambos objetos e os salvei e quando fui adicionar um aluno em uma matéria o seguinte erro apareceu:

OperationalError: no such table: sistema_matricula_materia_alunos

Entretanto tanto o aluno e materia salvos estão em suas respectivas tabelas, pois consigo dar get neles.

Desde já agradeço

Lucas você pode colocar no return do método def srt.