使用数据创建模型表单的实例
Create instance of model form with data
这是我的代码:
class asignaForm_web(forms.ModelForm):
class Meta:
model=asignacion
fields=['usuario']
class asignaForm_view(forms.ModelForm):
class Meta:
model=asignacion
fields=['usuario','rol','proyecto']
def asignarRol(request,rolid,proyectoid):
proyectox=proyecto.objects.get(proyecto_id=proyectoid)
if request.method=='POST':
#necesito obtener el usuario
form=asignaForm_web(request.POST)
if form.is_valid():
usuario=form.cleaned_data['usuario']#aca nose si obtener el user o si con esto es suficiente
#tengo que crear una asignacion con los datos que ya tengo
""" asignacionx=asignacion(usuario,rolid,proyectoid)
#no creo que esto funcione
asignacionx.save()"""
formx=asignaForm_view(usuario,rolid,proyectoid)
formx.save()
#Volver a la vista de scrum redirigiendo al mismo template con las mismas variables
return render(request,'rol-flujo-para-scrum.html',{'roles':rol.objects.all(), 'flujos':Flujo.objects.all(),'proyecto':proyectox})
else:
form= asignaForm_web()
return render_to_response('asignaRolProyecto.html',{'formulario':form,'proyecto':proyectox},context_instance=RequestContext(request))
全部在 views.py 文件中,当我收到一个 'GET'
请求时,我发送一个带有 1 个字段的 form(asignaFOrm_web)
并且在 'POST'
中假装使用那个字段作为另一个 form(asignaForm_view)
中的数据值,我想将其保存到数据库中
我不确定这条线
formx=asignaForm_view(usuario,rolid,proyectoid)
当然不行,什么方法才是正确的?
您需要指定名称,因为表单正在为字段使用 kwargs。
kwargs = {
'proyecto': proyecto.objects.get(proyecto_id=proyectoid),
'usario': usuario=form.cleaned_data['usuario'],
'rolid': rolid
}
AsignaForm(**kwargs) # you should fix the form name to fit camel case,
或
AsignaForm(proyecto=proyecto.objects.get(proyecto_id=proyectoid),
usario=usuario=form.cleaned_data['usuario'],
rolid=rolid)
这是我的代码:
class asignaForm_web(forms.ModelForm):
class Meta:
model=asignacion
fields=['usuario']
class asignaForm_view(forms.ModelForm):
class Meta:
model=asignacion
fields=['usuario','rol','proyecto']
def asignarRol(request,rolid,proyectoid):
proyectox=proyecto.objects.get(proyecto_id=proyectoid)
if request.method=='POST':
#necesito obtener el usuario
form=asignaForm_web(request.POST)
if form.is_valid():
usuario=form.cleaned_data['usuario']#aca nose si obtener el user o si con esto es suficiente
#tengo que crear una asignacion con los datos que ya tengo
""" asignacionx=asignacion(usuario,rolid,proyectoid)
#no creo que esto funcione
asignacionx.save()"""
formx=asignaForm_view(usuario,rolid,proyectoid)
formx.save()
#Volver a la vista de scrum redirigiendo al mismo template con las mismas variables
return render(request,'rol-flujo-para-scrum.html',{'roles':rol.objects.all(), 'flujos':Flujo.objects.all(),'proyecto':proyectox})
else:
form= asignaForm_web()
return render_to_response('asignaRolProyecto.html',{'formulario':form,'proyecto':proyectox},context_instance=RequestContext(request))
全部在 views.py 文件中,当我收到一个 'GET'
请求时,我发送一个带有 1 个字段的 form(asignaFOrm_web)
并且在 'POST'
中假装使用那个字段作为另一个 form(asignaForm_view)
中的数据值,我想将其保存到数据库中
我不确定这条线
formx=asignaForm_view(usuario,rolid,proyectoid)
当然不行,什么方法才是正确的?
您需要指定名称,因为表单正在为字段使用 kwargs。
kwargs = {
'proyecto': proyecto.objects.get(proyecto_id=proyectoid),
'usario': usuario=form.cleaned_data['usuario'],
'rolid': rolid
}
AsignaForm(**kwargs) # you should fix the form name to fit camel case,
或
AsignaForm(proyecto=proyecto.objects.get(proyecto_id=proyectoid),
usario=usuario=form.cleaned_data['usuario'],
rolid=rolid)