【发布时间】:2018-12-17 07:29:48
【问题描述】:
我想要做的是根据页面隐藏或显示一些选择。 例如,
models.py
USA = 'usa'
FRANCE = 'france'
CHINA = 'china'
GERMANY = 'germany'
SPAIN = 'spain'
TOPICS = (
(USA, 'USA'),
(FRANCE, 'France'),
(CHINA, 'China'),
(GERMANY, 'Germany'),
(SPAIN, 'Spain'),
)
topic = models.CharField(
choices=TOPICS,
default=USA,
)
对于一个页面,我想强制用户不要选择 USA,所以我想在表单中隐藏 USA 并更改默认值。我该怎么做?
这是我当前的代码。 类 AForm(forms.ModelForm):
class Meta:
model = A
fields = ['topic',]
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['topic'].choices = ['France', 'Germany', 'Spain']
有一个错误。
ValueError:解包的值太多(预计 2 个)
我将其替换为随机的两个字符,例如ab,其中一个字符作为选项出现在表单上,即使我没有在模型上定义它。我仍然不明白如何将覆盖的选项与模型相关联。 ModelForm 的正确方法是什么?
【问题讨论】:
-
在
__init__中,您可以通过self.fields['topic'].choices进行操作。
标签: python django django-forms