在Django模型中维护同一对象的多个实例

在Django模型中维护同一对象的多个实例,django,django-models,Django,Django Models,我正在Django创建一个小应用程序,在那里我需要维护不同课程培训批次的详细信息。这些批次中的每一批都有一个要涵盖的主题列表。例如,python课程可以由不同学院的不同培训师同时进行,因此他们都有自己的主题列表。以下是我的想法,但我认为我错了。我不知道该怎么做。请建议正确的方法 到目前为止,我的模型 class Course(models.Model): name = models.CharField(max_length=50, default="Enter Course Name")

我正在Django创建一个小应用程序,在那里我需要维护不同课程培训批次的详细信息。这些批次中的每一批都有一个要涵盖的主题列表。例如,python课程可以由不同学院的不同培训师同时进行,因此他们都有自己的主题列表。以下是我的想法,但我认为我错了。我不知道该怎么做。请建议正确的方法

到目前为止,我的模型

class Course(models.Model):
    name = models.CharField(max_length=50, default="Enter Course Name")

class Trainer(models.Model):
    name = models.CharField(max_length=50, default="Enter Trainer Name")

class College(models.Model):
    name = models.CharField(max_length=50, default="Enter College Name")

class CourseBatch(models.Model):
    startDate = models.DateField(null = True, blank = True)
    endDate = models.DateField(null = True, blank = True)
    batchName = models.CharField(max_length=50, default="Enter Batch Name")
    course = models.ForeignKey(Course, on_delete=models.CASCADE, related_name="course")
    trainer = models.ForeignKey(Trainer, on_delete=models.CASCADE, related_name="trainer")
    college = models.ForeignKey(College, on_delete=models.CASCADE, related_name="college")

class CheckPoints(models.Model):
    description = models.CharField(max_length=50, default="Enter Description")
    chkPoint = models.BooleanField(default=False)    
    course = models.ForeignKey(Course, on_delete=models.CASCADE, related_name="course")

class ChkListForBatch(models.Model):
    batch = models.ForeignKey(CourseBatch, on_delete=models.CASCADE, related_name="coursebatch")
    chkpoint = models.ForeignKey(CheckPoints, on_delete=models.CASCADE, related_name="chkpoint")

在这里,每个课程都需要有自己的检查点(主题)来涵盖。如何实现相同的功能?

据我所知,每个国家都有一个检查点列表。您需要选择每个特定批次的检查点

更新。如果要保存或不保存已完成的控制点,请执行以下操作:

class Course(models.Model):
    name = models.CharField(max_length=50, default="Enter Course Name")

class Trainer(models.Model):
    name = models.CharField(max_length=50, default="Enter Trainer Name")

class College(models.Model):
    name = models.CharField(max_length=50, default="Enter College Name")

class CourseBatch(models.Model):
    startDate = models.DateField(null = True, blank = True)
    endDate = models.DateField(null = True, blank = True)
    batchName = models.CharField(max_length=50, default="Enter Batch Name")
    course = models.ForeignKey(Course, on_delete=models.CASCADE, related_name="course")
    trainer = models.ForeignKey(Trainer, on_delete=models.CASCADE, related_name="trainer")
    college = models.ForeignKey(College, on_delete=models.CASCADE, related_name="college")

class CheckPoints(models.Model):
    description = models.CharField(max_length=50, default="Enter Description")
    course = models.ForeignKey(Course, on_delete=models.CASCADE, related_name="course")

class ChkListForBatch(models.Model):
    batch = models.ForeignKey(CourseBatch, on_delete=models.CASCADE, related_name="coursebatch")
    checkpoint = models.ForeignKey(CheckPoints, on_delete=models.CASCADE, related_name="chkpoint")
    checkpoint_is_done = models.BooleanField(default=False)    

据我所知,每个国家都有一个检查点列表。您需要选择每个特定批次的检查点

更新。如果要保存或不保存已完成的控制点,请执行以下操作:

class Course(models.Model):
    name = models.CharField(max_length=50, default="Enter Course Name")

class Trainer(models.Model):
    name = models.CharField(max_length=50, default="Enter Trainer Name")

class College(models.Model):
    name = models.CharField(max_length=50, default="Enter College Name")

class CourseBatch(models.Model):
    startDate = models.DateField(null = True, blank = True)
    endDate = models.DateField(null = True, blank = True)
    batchName = models.CharField(max_length=50, default="Enter Batch Name")
    course = models.ForeignKey(Course, on_delete=models.CASCADE, related_name="course")
    trainer = models.ForeignKey(Trainer, on_delete=models.CASCADE, related_name="trainer")
    college = models.ForeignKey(College, on_delete=models.CASCADE, related_name="college")

class CheckPoints(models.Model):
    description = models.CharField(max_length=50, default="Enter Description")
    course = models.ForeignKey(Course, on_delete=models.CASCADE, related_name="course")

class ChkListForBatch(models.Model):
    batch = models.ForeignKey(CourseBatch, on_delete=models.CASCADE, related_name="coursebatch")
    checkpoint = models.ForeignKey(CheckPoints, on_delete=models.CASCADE, related_name="chkpoint")
    checkpoint_is_done = models.BooleanField(default=False)    
检查检查点模型,我添加了带有解释者的
ForeignKey
ManyToManyField


检查检查点模型,我添加了带有解释者的
ForeignKey
ManyToManyField

为什么在CourseBatch和检查点之间没有ForeignKey关系?我对此感到困惑,因为我想让多个检查点与单个CourseBatch关联。此外,它们还应另存为不同的对象。如果我有外键关系,我可以关联一个检查点,但不能关联多个。这就是我创建ChkListForBatch的原因。让我知道你们的想法。我添加答案,我在带有注释的检查点模型中添加两个字段。祝你好运。为什么在CourseBatch和检查点之间没有ForeignKey关系?我对此感到困惑,因为我希望多个检查点与单个CourseBatch关联。此外,它们还应另存为不同的对象。如果我有外键关系,我可以关联一个检查点,但不能关联多个。这就是我创建ChkListForBatch的原因。让我知道你们的想法。我添加答案,我在带有注释的检查点模型中添加两个字段。祝你好运。这对我来说很好,我会尝试一下,然后接受它作为答案。另外,请让我知道,当数据来自不同的模型并且要保存到不同的模型中时,我将如何在表单上填充这些字段,因为我是DjangoView的新手,例如:。请注意,模型的字段名需要用小写字母Hi Vyacheslav书写,感谢您的建议,但是该链接显示了如何在同一网页上两次显示同一表单。我的问题是我没有表单模型,因为我将在运行时查询给定批次的数据(ChkListForBatch项)。因此,在创建批次时,我必须根据课程查询检查点,然后将它们保存到ChkListForBatch中,然后在选择相应的课程批次时在表单上显示它们。您的问题太广泛,我不太明白它是什么。我想你应该先问一个问题,然后演示你的代码。您好,基于原始问题,请建议如何在从管理界面创建新的CourseBatch(基于选定的课程id及其检查点)时自动填充chkListForbatch。我不希望用户手动填充相应的chkListForbatch项,因为这是重复的机械工作。这对我来说很好,将尝试一下,然后接受它作为答案。另外,请让我知道,当数据来自不同的模型并且要保存到不同的模型中时,我将如何在表单上填充这些字段,因为我是DjangoView的新手,例如:。请注意,模型的字段名需要用小写字母Hi Vyacheslav书写,感谢您的建议,但是该链接显示了如何在同一网页上两次显示同一表单。我的问题是我没有表单模型,因为我将在运行时查询给定批次的数据(ChkListForBatch项)。因此,在创建批次时,我必须根据课程查询检查点,然后将它们保存到ChkListForBatch中,然后在选择相应的课程批次时在表单上显示它们。您的问题太广泛,我不太明白它是什么。我想你应该先问一个问题,然后演示你的代码。您好,基于原始问题,请建议如何在从管理界面创建新的CourseBatch(基于选定的课程id及其检查点)时自动填充chkListForbatch。我不希望用户手动填充相应的chkListForbatch项,因为这是重复的机械工作。