gpt4 book ai didi

django - Django 中的动态 MultiValueField

转载 作者:行者123 更新时间:2023-12-04 04:41:26 26 4
gpt4 key购买 nike

我正在尝试基于动态创建其字段的 MultiValueField 创建自定义小部件。类似的东西:

class MyField(MultiValueField):
def __init__(self, my_param, *args, **kwargs):
fields = []
for field in my_param.all():
fields.append(forms.ChoiceField(
widget=forms.Select(attrs={'class':'some_class'})))

super(MyField, self).__init__(
self, fields=tuple(fields), *args, **kwargs)

以及使用该字段的表单,如下所示:
class MyForm(forms.Form):
multi_field = MyField()
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
self.fields['multi_field'].my_param = self.initial['car_types'].another

我现在不知何故被困住了。如何将参数(例如 my_param)传递给 MyField 的 初始化 () 方法,当参数仅从 MyForm 的构造函数中知道时(例如 self.initial['car_types'].another)?

最佳答案

您需要在 __init__ 中实例化您的字段:

class MyForm(forms.Form):
def __init__(self, *args, **kwargs):
super(MyForm, self).__init__(*args, **kwargs)
self.fields['multi_field'] = MyField(self.initial['car_types'].another)

关于django - Django 中的动态 MultiValueField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18830580/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com