我想做的是根据页面隐藏或显示一些选择。
例如,
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
的正确方法是什么?
python大神给出的解决方案
这与ModelForm无关,但与定义选项的方式有关-选择应该是(value, label)
元组的列表(请看您如何在模型中定义选择),而不是值的列表。您想要的是:
self.fields['topic'].choices = [
('france','France'),
('germany', 'Germany'),
('spain', 'Spain')
]
或更好):
self.fields['topic'].choices = [
choice for choice in YourModel.TOPICS
if choice[0] in ('france', 'germany', 'spain')
]
Python pytz时区函数返回的时区为9分钟 - python由于某些原因,我无法从以下代码中找出原因:>>> from pytz import timezone >>> timezone('America/Chicago') 我得到:<DstTzInfo 'America/Chicago' LMT-1 day, 18:09:00 STD…
如何在Django中获取视图函数的URL路径 - python举个例子:view.pydef view1( request ): return HttpResponse( "just a test..." ) urls.pyurlpatterns = patterns('', url( r'^view1$', 'app1.view.view1…
用大写字母拆分字符串,但忽略AAA Python Regex - python我的正则表达式:vendor = "MyNameIsJoe. I'mWorkerInAAAinc." ven = re.split(r'(?<=[a-z])[A-Z]|[A-Z](?=[a-z])', vendor) 以大写字母分割字符串,例如:'我的名字是乔。 I'mWorkerInAAAinc”变成…
Python:同时在for循环中添加到列表列表 - python我想用for循环外的0索引值创建一个新列表,然后使用for循环添加到相同的列表。我的玩具示例是:import random data = ['t1', 't2', 't3'] masterlist = [['col1', 'animal1', 'an…
查找字符串中的行数 - python我正在创建一个python电影播放器/制作器,我想在多行字符串中找到行数。我想知道是否有任何内置函数或可以编写代码的函数来做到这一点:x = """ line1 line2 """ getLines(x) python大神给出的解决方案 如果换行符是'\n',则nlines …