如何将复杂的查询写入 1)创建一个Student,Course,OptionOne-示例-
student_name=John,
rollno = 20
course1 = this field will refence a field in OptionOne, OptionOne will
reference the course desired. enter code here
**illustration** - John Selects mathematics as the first option, while Mike
selects Geoography as Option One, Mathematics as Option Two
2)选择所有选择数学的学生作为选项一 3)选择学生以及他选择的课程
django.db import models
# Create your models here.
class Course(models.Model):
course_name = models.CharField(max_length=200)
course_code = models.CharField(max_length=200)
class PriorityOne(models.Model):
course = models.OneToOneField(Course, verbose_name=("Course"),
on_delete=models.CASCADE)
class PriorityTwo(models.Model):
course = models.OneToOneField(Course, verbose_name=("Course"),
on_delete=models.CASCADE)
class PriorityThree(models.Model):
course = models.OneToOneField(Course, verbose_name=("Course"),
on_delete=models.CASCADE)
class Student(models.Model):
student_name=models.CharField(max_length=200)
rollno = models.CharField(max_length=200)
course1 = models.OneToOneField(PriorityOne,on_delete=models.CASCADE)
course2 = models.OneToOneField(PriorityTwo,on_delete=models.CASCADE)
course3 = models.ForeignKey(PriorityThree, on_delete=models.CASCADE)
答案 0 :(得分:0)
如果多个学生可以参加同一门课程,则可以在此处使用M:M字段。该课程将具有引用Student
模型的ManyToMany字段。这意味着可以将多个课程对象与一个学生关联,并且一个学生可以拥有多个课程。我知道在定义M2M字段的地方似乎有些奇怪。如果要设置优先级列表,则可以定义具有最高优先级过程pk的整数字段。当然,这是一种方法。 M2M字段的任何语法都在此处Django M2M docs中。如果您需要进一步的解释,我们将很乐意为您提供帮助。