使用django形成多对多关系模型
Using django form many to many relationship model
我对使用 Django 很陌生,但基本上我有两个模型:Student 和 Module
class Student(models.Model):
student_id = models.CharField(max_length=4, unique=True)
name = models.CharField(max_length=150)
birthday = models.DateField()
class Module(models.Model):
name = models.CharField(max_length=150)
code = models.IntegerField()
student = models.ManyToManyField(Student)
现在我的问题是,基本上如果我使用 Django 表单将新学生添加到数据库中,我如何获取数据库中的模块列表。
我可以将学生添加到模块中以添加新的模块形式,但不知道如何使用其他方式
然后说如果我想在一个页面中列出学生正在学习的所有模块,我如何访问这些学生也可以访问的模块?
非常感谢任何帮助
how do I get the list of Modules I have in the DB.
Module.objects.all()
how do I access the modules those students are access to aswell?
s = Student.objects.get(pk=1)
students_modules = s.module_set.all()
完成任务的方法有很多种。但更专业的做法是重新设计数据库模式,这样您就不会在数据库中出现任何重复数据,如下所述。
class Student(models.Model):
student_id = models.CharField(max_length=4, unique=True)
name = models.CharField(max_length=150)
birthday = models.DateField()
class Module(models.Model):
name = models.CharField(max_length=150)
code = models.IntegerField()
class StudentsModule(models.Model):
student = models.ForeignKey(Student)
module = models.ForeignKey(Module)
说明
如果您有用户列表并想添加到 Module
中,那么您需要从 Student
模型中获取 Students
(pk) 列表。
创建新的 Module
并获取 Module
的 pk
。
您有 Students
和 Module
的列表,现在您需要在 StudentsModule
模型中创建记录。使用 Module
.
为每个 Student
创建新行
例子
创建学生
student_object1 = Student.objects.create(name="abc", birthday="2001-12-12")
student_object2 = Student.objects.create(name="xyz", birthday="2005-12-12")
创建模块
module_object = Module.objects.create(name="mno", code=123)
创建学生模块
StudnetsModule.objects.create(student=student1, module=module_object)
StudnetsModule.objects.create(student=student2, module=module_object)
现在您可以访问与 Student
相关的 Modules
和与 Module
相关的 Students
的列表
我对使用 Django 很陌生,但基本上我有两个模型:Student 和 Module
class Student(models.Model):
student_id = models.CharField(max_length=4, unique=True)
name = models.CharField(max_length=150)
birthday = models.DateField()
class Module(models.Model):
name = models.CharField(max_length=150)
code = models.IntegerField()
student = models.ManyToManyField(Student)
现在我的问题是,基本上如果我使用 Django 表单将新学生添加到数据库中,我如何获取数据库中的模块列表。
我可以将学生添加到模块中以添加新的模块形式,但不知道如何使用其他方式
然后说如果我想在一个页面中列出学生正在学习的所有模块,我如何访问这些学生也可以访问的模块?
非常感谢任何帮助
how do I get the list of Modules I have in the DB.
Module.objects.all()
how do I access the modules those students are access to aswell?
s = Student.objects.get(pk=1)
students_modules = s.module_set.all()
完成任务的方法有很多种。但更专业的做法是重新设计数据库模式,这样您就不会在数据库中出现任何重复数据,如下所述。
class Student(models.Model):
student_id = models.CharField(max_length=4, unique=True)
name = models.CharField(max_length=150)
birthday = models.DateField()
class Module(models.Model):
name = models.CharField(max_length=150)
code = models.IntegerField()
class StudentsModule(models.Model):
student = models.ForeignKey(Student)
module = models.ForeignKey(Module)
说明
如果您有用户列表并想添加到 Module
中,那么您需要从 Student
模型中获取 Students
(pk) 列表。
创建新的 Module
并获取 Module
的 pk
。
您有 Students
和 Module
的列表,现在您需要在 StudentsModule
模型中创建记录。使用 Module
.
Student
创建新行
例子
创建学生
student_object1 = Student.objects.create(name="abc", birthday="2001-12-12")
student_object2 = Student.objects.create(name="xyz", birthday="2005-12-12")
创建模块
module_object = Module.objects.create(name="mno", code=123)
创建学生模块
StudnetsModule.objects.create(student=student1, module=module_object)
StudnetsModule.objects.create(student=student2, module=module_object)
现在您可以访问与 Student
相关的 Modules
和与 Module
Students
的列表