【发布时间】:2019-05-19 07:40:11
【问题描述】:
如何禁用下拉列表的表单字段验证?在 .js 文件中,我使用 Ajax 从数据库返回 json 数据并将其填充到下拉列表中。当我尝试保存表单时,它给了我这个验证错误。
在forms.py中:
class CreateAForm(forms.ModelForm):
DUMMY_LIST =[]
ptvb_dept= forms.ChoiceField(choices= DUMMY_LIST)
在views.py中:
@login_required
def json_ptvb_dept(request):
sql = """ select category as dept from tablename order by 1;"""
df = pd.read_sql(sql, teradata_con())
df_dept = df[['dept']].drop_duplicates()
dic = {'dept':[]}
for index, row in df_dept.iterrows():
dic['dept'].append(row['dept'])
return HttpResponse(json.dumps(dic))
【问题讨论】:
-
json 响应是否使用 id 和描述?您可能需要在选项中包含 id,并将描述(散装食品)作为文本。
-
另外,关于 is_valid,Python 如何知道什么是有效选择?如果是基于表单中的其他字段,可能需要在验证时使用init方法设置有效选项。
-
@AMG 谢谢!我是 django 的新手。 json 返回如下所示:{"dept": ["Bulk Foods", "Cosmetics"]}。稍后,我将在 sql 中使用选定的值,例如“where ColumnName=SelectedValue”。我应该这样做你的意思是:{“1”:“散装食品”,“2”:“化妆品”]}?你能告诉我如何使用 init 方法来设置有效的选择吗?还有一件事,有效的选择也会随着时间而改变。
-
您能否发布您用于生成 json 响应的 views.py 方法。在这里和那里进行一些调整,我们会帮你整理好
标签: django python-3.x