【问题标题】:Django - Disable form select field validation for a drop downDjango - 禁用下拉列表的表单选择字段验证
【发布时间】: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


【解决方案1】:

关于“表单字段”的两个概念在哪里:实际上是form fields(这些人实现了所有验证和 ORM 转换)和widgets(如何在前端呈现它们)。

每个标准表单字段都已与其默认小部件关联,但您可以指定它:

ptvb_dept = forms.TextField(widget=widgets.Select)

【讨论】:

  • 谢谢。有效!!! ptvb_dept = forms.CharField(widget= widgets.Select)
猜你喜欢
  • 2015-07-17
  • 2011-10-09
  • 1970-01-01
  • 2012-01-13
  • 2022-07-06
  • 1970-01-01
  • 1970-01-01
  • 2013-06-07
  • 1970-01-01
相关资源
最近更新 更多