使用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 并获取 Modulepk

您有 StudentsModule 的列表,现在您需要在 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 的列表