2015-08-08 5 views
0

Проверили вопросы по этой теме на SO, из них многие устарели (dj < = 1.4), так что задайте новый quesiton. Я думаю, это просто, я очень новичок в Django и Python.Как заполнить вложенные поля ManyToMany в Django с помощью Shell?

У меня есть некоторые модели, из которых есть вложенные ManyToManyFields, Я хочу знать, как я могу сохранить объект на нижнем уровне, включая все верхние уровни. То есть, просто добавив объект учителя, я хочу добавить учеников и родителей на ту же самую муху.

Мои модели

class Parent(models.Model): 
    name = models.CharField(max_length=10) 
    address = models.TextField(blank=True) 

class Student(models.Model): 
    name = models.CharField(models.Model) 
    parents = models.ManyToManyField(Parent) 

class Teacher(models.Model): 
    name = models.CharField(max_length=10) 
    student = models.ManyToManyField(Student) 

Я знаю, что для создания объекта для простой модели, с помощью Teacher.objects.create(name='some name'), но не знаю, как заполнить студент и родитель.

выборочные данные

teacher: Susan

students: Alan, Mike

parents: Alan-> George, Mike-> John Doe (адрес быть пустым)

спасибо за любую помощь.

pS. пожалуйста, не говорят, что его невозможно, как можно через панель администратора (GUI)

ответ

3

Для создания и ассоциированной Student и Parent объектов с помощью Teacher object, вы можете использовать .create() вместе с .add().

Например:

teacher = Teacher.objects.create(name='some name') 
student = Student.objects.create(name='some_name') 
parent = Parent.objects.create(name='some_name', address='some_address') 

Это создаст teacher, student и parent объект.

Затем связать их, вы можете сделать что-то вроде:

teacher.student.add(student) # associate the 'teacher' object with the 'student' object 

student.parents.add(parent) # associate the 'student' object with the 'parent' object 

Для вашего дела, вы можете сделать что-то вроде:

teacher = Teacher.objects.create(name='Susan') # create a teacher object 
student1 = Student.objects.create(name='Alan') # create 1st student 
student2 = Student.objects.create(name='Mike') # create 2nd student 
parent1 = Parent.objects.create(name='George') # create parent object 
parent2 = Parent.objects.create(name='John Doe') # create parent object 

teacher.student.add(student1) # associate teacher with 1st student 
teacher.student.add(student2) # associate teacher with 2nd student 

student1.parents.add(parent1) # associate 1st student with parent1 
student2.parents.add(parent2) # associate 2nd student with parent2 

Примечание: Было бы лучше, если вы определите student поле в Teacher модель как students вместо student i.e использование множественного числа.

 Смежные вопросы

  • Нет связанных вопросов^_^