Django创建动态表单,将queryset的值作为字段

时间:2019-05-06 12:48:14

标签: django django-forms django-views

假设我有一个包含3条记录的queryset。我想要使​​用此查询集创建表单并将字段的值(例如模型的名称字段)用作表单的字段名称。而且该查询集中必须有尽可能多的字段和许多记录。 请帮助!

1 个答案:

答案 0 :(得分:0)

您可以在表单中动态添加字段。假设您有一个带有MyModel字段的模型name

class MyModel(models.Model):
    name = models.CharField()

您可以使用这样的动态字段定义表单

class MyForm(forms.Form):
    def __init__(self, *args, **kwargs):
        qs = kwargs.pop('qs')
        super().__init__(*args, **kwargs)

        for instance in qs:
            self.fields[instance.name] = forms.CharField() # or whatever field you want

您可以将此表格与queryset一起使用

qs = MyModel.objects.all()

form = MyForm(qs=qs)