【问题标题】:Django Creating Dynamic Form, with queryset's values as fieldDjango 创建动态表单,查询集的值作为字段
【发布时间】:2019-09-24 02:42:38
【问题描述】:

假设我有一个包含 3 条记录的查询集。我想使用这个查询集创建一个表单并使用字段的值(比如模型的名称字段)作为表单的字段名称。并且必须有尽可能多的字段,并且该查询集中有许多记录。 请帮忙!

【问题讨论】:

    标签: django django-forms django-views


    【解决方案1】:

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

    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
    

    您可以将此表单与查询集一起使用

    qs = MyModel.objects.all()
    
    form = MyForm(qs=qs)
    

    【讨论】:

    • 但这会强制每次都使用 GET 而不是 POST 的请求,这也是我卡住的地方
    猜你喜欢
    • 2012-06-29
    • 2011-02-07
    • 2012-09-10
    • 1970-01-01
    • 1970-01-01
    • 2016-12-20
    • 2012-06-04
    • 1970-01-01
    • 2017-08-10
    相关资源
    最近更新 更多