根据django中的regex动态设置选择字段的默认选项

时间:2015-04-18 20:12:10

标签: regex django django-forms

我需要设置字段' procedure_field'的默认值。动态地基于输入'程序' 例如:procedure_field填充了a123,b123,c123等     如果procedure是c,那么我需要将默认值设置为c123。 怎么做??

views.py

tickets = request.POST['tickets']
tickets = str(tickets).translate(None,'[]\'')
procedure = request.POST['procedure']
form = forms.fillForm(initial{'ticket_field':tickets,---code to set default----})
return render(request, 'fill_tickets.html',{'form':form})

forms.py

class fillForm(forms.Form):
ticket_field = forms.CharField(widget=forms.Textarea,required=True)
procedure_field = forms.ChoiceField(
        choices=get_procedures(),required=True )

get_procedures()返回静态值.. 当表单加载到html中时,我需要动态设置默认值。

1 个答案:

答案 0 :(得分:0)

如果我理解正确,那么您希望为过程提供默认(正确)值,以便在无效时替换提供的过程值。

这是一个使用ternary(-ish)运算符的好机会:

procedure = procedure if re.compile("[a-zA-Z][\\d]+", re.IGNORECASE).match(procedure) else "a123"

官方称之为Conditional Expression

看起来像这样展开:

import re

regex = re.compile("[a-zA-Z][\\d]+", re.IGNORECASE)
if not regex.match(procedure):
    procedure = "c123"