如何使用 Shell 在 Django 中填充嵌套的 ManyToMany 字段?
How do I fill in nested ManyToMany fields in Django with Shell?
查看了SO上关于这个主题的问题,其中很多已经过时(dj<=1.4),所以提出一个新问题。我想这很简单,我是 Django 和 Python.
的初学者
我有一些模型,其中有嵌套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)
要使用 Teacher object
创建和关联 Student
和 Parent
对象,您可以使用 .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
注意: 如果将 Teacher
模型中的 student
字段定义为 students
而不是 student
会更好即使用复数形式。
查看了SO上关于这个主题的问题,其中很多已经过时(dj<=1.4),所以提出一个新问题。我想这很简单,我是 Django 和 Python.
的初学者我有一些模型,其中有嵌套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)
要使用 Teacher object
创建和关联 Student
和 Parent
对象,您可以使用 .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
注意: 如果将 Teacher
模型中的 student
字段定义为 students
而不是 student
会更好即使用复数形式。