2015-04-07 28 views
0

數據模型形式的情況下,這是我的代碼:創建Django中

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場發送的形式(asignaFOrm_web)和在「POST」 Y假裝爲使用一個場作爲數據的值以另一種形式(asignaForm_view),我想保存到數據庫中

即時不能確定該行 formx = asignaForm_view(usuario,rolid,proyectoid ) 當然不起作用,什麼是正確的方法?

回答

0

您需要指定名稱,因爲窗體正在爲字段使用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) 
+0

太感謝你了! –