我需要自动填写一个带有会话变量的字段(如果存在),或者如果不存在则将其留空。
但我不知道如何使用Crispy表单在Django中创建它。
这是观点:
def addclient(request):
title = "Zona Clientes"
form = NewClientForm(request.POST or None)
if 'dni_cuit' in request.session:
dni_cuit = request.session.get('dni_cuit')
print("ESTÁ REGISTRADA LA SESSION DNI_CUIT"+dni_cuit)
context = {
"title": title,
"form": form,
"dni_cuit": dni_cuit
}
else:
context = {
"title": title,
"form": form,
}
if form.is_valid():
instance = form.save(commit=False)
instance.save()
del request.session['dni_cuit']
# Las 2 lineas anteriores pueden obviarse si solo queremos guardar
# los datos sin hacer nada con ellos con la siguiente linea
# form.save()
context = {
"title": "Cliente Añadido - Gracias",
}
return render(request, "clients/addclient.html", context)
这是表格:
# Formulario crear cliente
class NewClientForm(forms.ModelForm):
class Meta:
model = Client
fields = ['dni_cuit',
'first_name',
'last_name',
'phone',
'email',
'address',
]
def clean_dni_cuit(self):
dni_cuit = self.cleaned_data.get('dni_cuit')
return dni_cuit
def clean_first_name(self):
first_name = self.cleaned_data.get('first_name')
return first_name
def clean_last_name(self):
last_name = self.cleaned_data.get('last_name')
return last_name
def clean_phone(self):
phone = self.cleaned_data.get('phone')
return phone
def clean_email(self):
email = self.cleaned_data.get('email')
return email
def clean_address(self):
address = self.cleaned_data.get('address')
return address
任何人都可以告诉我如何设置dni_cuit
存储在dni_cuit
上的值的输入如果设置了吗?
答案 0 :(得分:2)
您可以使用表格初始值
使用initial在运行时声明表单字段的初始值。 例如,您可能希望用。填写用户名字段 当前会话的用户名。
要完成此操作,请使用Form的初始参数。这个论点, 如果给定,应该是一个字典映射字段名称为initial 值。仅包括您要为其指定初始值的字段 值;没有必要在表单中包含每个字段。
因此,在您的情况下,您检查会话并确定是否需要。
if 'dni_cuit' in request.session:
form = NewClientForm(request.POST or None, initial={'dni_cuit': request.session['dni_cuit']})
else:
form = NewClientForm(request.POST or None)
中详细了解相关信息