Django表单动态必需清单

时间:2018-07-09 16:07:23

标签: python django django-models django-forms

我有一个ModelForm,我想用一个清单项目的动态列表进行扩展。因此,用户只有在勾选所有复选框时才可以创建我的模型的实例,而这些复选框实际上并不属于模型本身。

清单和与之对应的清单清单项目是动态创建的,将来会更改。

class Checklist(models.Model):
    name = models.CharField(max_length=100)


class ChecklistItem(models.Model):
    checklist = models.ForeignKey(Checklist, on_delete=models.CASCADE)
    text = models.CharField(max_length=100)
    details = models.TextField(blank=True)

因此,在表格末尾,它应该看起来像这样(类似于接受服务条款):

desired form

我无法提出一种如何将每个清单的项目分组的解决方案。

如果我只想列出每个项目,而不关心它属于什么清单,我可以做:

class SomeForm(forms.ModelForm):
    model = SomeModel
    fields = ['some_attribute', 'another_attribute']


def __init__(self, *args, **kwargs):
    super(SomeForm, self).__init__(*args, **kwargs)

    for checklist in Checklist.objects.all():
        for item in checklist.checklistitem_set.all():
            self.fields[item.text] = forms.BooleanField(required=True)

但是那不是我想要的。我也不知道如何以这种方式访问​​ChecklistItem的details属性(例如,用于工具提示)。

有人知道如何实现此效果的优雅解决方案吗?

0 个答案:

没有答案