gpt4 book ai didi

python - 将数据传递到 Django 表单中

转载 作者:太空宇宙 更新时间:2023-11-03 12:51:25 24 4
gpt4 key购买 nike

class Test(forms.Form):

def set_choices(self, choices):
self.choices = choices

def get_choices(self):
return self.choices

options = forms.ChoiceField(choices=get_choices())

f = Test()
f.set_choices(...)

为什么这不可能?
我还能如何实现将数据传递到类 Test 的目标?
提前致谢。

最佳答案

这是一个基本的 Python 问题。您需要考虑这些命令的执行顺序及其范围。

首先,您定义一个名为 Test 的表单类。该类具有三个属性:set_choices 方法、get_choices 方法和options 字段。这些定义在定义类本身时进行评估。 options 的定义调用 get_choices()。但是,此时范围内没有 get_choices 方法,因为该类尚未定义。

即使您以某种方式设法解决了范围问题,这仍然无法满足您的要求,因为 options 的选择定义是在定义时完成的。即使您稍后调用 set_choicesoptions 仍然具有定义字段时返回的 get_choices 的值。

那么,你到底想做什么?您似乎想在 options 字段上设置动态选择。因此,您应该覆盖 __init__ 方法并在那里定义它们。

class Test(forms.Form):
options = forms.ChoiceField(choices=())

def __init__(self, *args, **kwargs):
choices = kwargs.pop('choices', None)
super(Test, self).__init__(*args, **kwargs)
if choices is not None:
self.fields['options'].choices = choices

关于python - 将数据传递到 Django 表单中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5744327/

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