使用Django为模型中的每个主键创建一个多选表单

时间:2018-01-23 08:32:25

标签: django django-forms django-views

我正在尝试在Django中创建一个类注册应用程序。为了简化我的问题,我有一个学生模型,块(时间段)和课程(课程)。每个块有多个类,学生必须为每个块注册一个类。将允许一些自定义,因此事先不知道有多少块或每个块可用的类。

我想生成一个带有单选按钮的表单,如下所示:

<小时/>

A座(9:00 - 11:00)

  • 适合初学者的Django课程
  • 其他一些课程
  • 又一个班级

B座(11:00-13:00)

  • 某事的等级
  • 如何数学
  • 占位符类

...

E座(16:00-17:30)

  • 选择1
  • 选择2
  • 选择3
  • 选择4

目前,我的模型看起来像这样:

class Student(models.Model):
    first_name = models.CharField()
    [...]

class Block(models.Model):
    block = models.CharField(
        primary_key=True,
        choices=(('A', 'Block A'),
                 ('B', 'Block B'),
                 ('C', 'Block C'),
                 ('D', 'Block D'),
                 ('E', 'Block E')))
    start_time = models.DateTimeField()
    [...]

class Class(models.Model):
    title = models.CharField()
    block = models.ForeignKey('Block')
    [...]

到目前为止,我的forms.py

中有类似的内容
class ClassForm(Form):
    class_choice = ModelChoiceField(
        queryset=Class.objects.all(),
        widget=RadioSelect,
        empty_label=None)

我可以在我的views.py中提供该表单,但当然它只列出了每个块的所有可用类。

我认为我需要循环遍历所有现有的块并过滤每个块迭代的课程并将其列为多选形式,但我不确定解决问题的最佳方法是什么,然后如何记录每个学生每个街区的班级选择。

0 个答案:

没有答案