Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django-窗体上的动态字段数_Python_Django - Fatal编程技术网

Python Django-窗体上的动态字段数

Python Django-窗体上的动态字段数,python,django,Python,Django,为了解决这个问题,我花了24小时的时间把头撞在墙上。我已经知道,在这个委员会上至少有10个类似的问题。为什么我还在问?嗯,因为似乎没有解决办法。代码如下: class MyAdminForm(forms.ModelForm): some_field = forms.CharField() def __init__(self, *args, **kwargs): super(MyAdminForm, self).__init__(*args, **kwarg

为了解决这个问题,我花了24小时的时间把头撞在墙上。我已经知道,在这个委员会上至少有10个类似的问题。为什么我还在问?嗯,因为似乎没有解决办法。代码如下:

class MyAdminForm(forms.ModelForm):   
    some_field = forms.CharField()

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

        for i in range(0, 10):
            self.fields['file_field_%d' % i] = forms.FileField()

这段代码只呈现一些_字段,而不呈现其他字段。我添加了10个文件字段,这似乎并不重要。Django版本是1.3.1

在调用基类的uuu init_uuu之前添加字段对我来说很有效

class MyAdminForm(forms.ModelForm):   
    some_field = forms.CharField()

    def __init__(self, *args, **kwargs):
        for i in range(0, 10):
            self.fields['file_field_%d' % i] = forms.FileField()

        super(MyAdminForm, self).__init__(*args, **kwargs)
如果表单的每个实例中不需要可变数量的字段,那么只修改base_fields类属性也可以

class MyAdminForm(forms.ModelForm):   
    some_field = forms.CharField()

for i in range(0, 10):
    MyAdminForm.base_fields['file_field_%d' % i] = forms.FileField()

在调用基类的_init__之前添加字段对我来说很有效

class MyAdminForm(forms.ModelForm):   
    some_field = forms.CharField()

    def __init__(self, *args, **kwargs):
        for i in range(0, 10):
            self.fields['file_field_%d' % i] = forms.FileField()

        super(MyAdminForm, self).__init__(*args, **kwargs)
如果表单的每个实例中不需要可变数量的字段,那么只修改base_fields类属性也可以

class MyAdminForm(forms.ModelForm):   
    some_field = forms.CharField()

for i in range(0, 10):
    MyAdminForm.base_fields['file_field_%d' % i] = forms.FileField()

我觉得没问题。你能更新你的问题以包含你用来显示模型表单的代码吗?实际上,这就是所有的代码:+this:class MyAdminadmin.ModelAdmin:form=MyAdminFormOk,所以你试图在Django admin中使用表单。。。这让事情变得更加棘手。正如我前面所说的,我觉得您的模型表单很好,可以在常规视图中工作。我不知道Django管理员的问题出在哪里。你可以开始四处挖掘,希望Stack Overflow上的其他人知道答案,或者将其视为你试图在Django admin中进行过多定制的迹象,是时候写你自己的视图了。这实际上是我想到的想法——也许我应该写我自己的视图,但另一方面,很难相信django开发人员制造了这样一个bug……你会不时遇到这样的问题。这并不意味着Django管理员不好,只是它的设计没有考虑到这个用例。这在我看来还行。你能更新你的问题以包含你用来显示模型表单的代码吗?实际上,这就是所有的代码:+this:class MyAdminadmin.ModelAdmin:form=MyAdminFormOk,所以你试图在Django admin中使用表单。。。这让事情变得更加棘手。正如我前面所说的,我觉得您的模型表单很好,可以在常规视图中工作。我不知道Django管理员的问题出在哪里。你可以开始四处挖掘,希望Stack Overflow上的其他人知道答案,或者将其视为你试图在Django admin中进行过多定制的迹象,是时候写你自己的视图了。这实际上是我想到的想法——也许我应该写我自己的视图,但另一方面,很难相信django开发人员制造了这样一个bug……你会不时遇到这样的问题。这并不意味着Django管理员不好,只是它的设计没有考虑到这个用例。我得到的错误是:“MyAdminForm”对象没有属性“fields”。当我在循环之前初始化字段时,它也不起作用…还有一件事-这些文件字段被添加到self.fields中-我在一些核心django方法中对其进行了循环,它们就在那里。我得到的错误是:“MyAdminForm”对象没有属性“fields”。当我在循环之前初始化字段时,它也不起作用……还有一件事——这些文件字段被添加到self.fields中——我在一些核心django方法中循环了它,它们就在那里。