Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Establecer valor en campo de modelo desde views.py y no funciona HttpResponseRedirect

Estas en el tema de Establecer valor en campo de modelo desde views.py y no funciona HttpResponseRedirect en el foro de Python en Foros del Web. Hola, Tengo una aplicación web Django donde he creado un formulario usando ModelForm, hay un campo del modelo que lo excluyo en forms.py pues no ...
  #1 (permalink)  
Antiguo 29/07/2015, 01:24
 
Fecha de Ingreso: octubre-2008
Mensajes: 276
Antigüedad: 16 años
Puntos: 1
Establecer valor en campo de modelo desde views.py y no funciona HttpResponseRedirect

Hola,

Tengo una aplicación web Django donde he creado un formulario usando ModelForm, hay un campo del modelo que lo excluyo en forms.py pues no quiero que aparezca en pantalla, sin embargo desde views.py le establezco un valor, pero al hacerlo no funciona HttpResponseRedirect.

Adjunto el código fuente de la función que me da problemas.

Primero el código original, donde no se establece ningún valor, en este caso el redirect funciona perfectamente:

Código Python:
Ver original
  1. def Item_create(request):
  2.     context = {'next': '/Item/create/'}
  3.     form = context['form'] = ItemForm(request.POST or None)
  4.  
  5.     if not form.is_valid():
  6.         return render(request, 'Item-edit.html', context)
  7.  
  8.     Item_name = request.POST['Item_name']
  9.     if Item.objects.filter(Item_name=Item_name).exists():
  10.         context['messages'] = "Item '{}' already exists".format(item)
  11.         return render(request, 'Item-edit.html', context)
  12.  
  13.     Item(**form.cleaned_data).save()
  14.     return HttpResponseRedirect("/Item/list/")

Ahora el código modificado, donde se establece un valor para el campo test, en este caso el redirect no funciona:

Código Python:
Ver original
  1. def Item_create(request):
  2.     context = {'next': '/Item/create/'}
  3.     form = context['form'] = ItemForm(request.POST or None)
  4.  
  5.     if not form.is_valid():
  6.         return render(request, 'Item-edit.html', context)
  7.  
  8.     item = form.save(commit=False)
  9.     item.test = datetime.datetime.now()
  10.     item.save()
  11.  
  12.     Item_name = request.POST['Item_name']
  13.     if Item.objects.filter(Item_name=Item_name).exists():
  14.         context['messages'] = "Item '{}' already exists".format(item)
  15.         return render(request, 'Item-edit.html', context)
  16.  
  17.     Item(**form.cleaned_data).save()
  18.     return HttpResponseRedirect("/Item/list/")

Muchas gracias.
__________________
Uso Apache 2.2 con PHP 5.5.9 y MySQL 5.1
Uso Eclipse IDE for Java Developers, Version: Mars.1 Release (4.5.1), Build id: 20150924-1200 para programar en Java bajo Windows

Última edición por letni; 29/07/2015 a las 01:34
  #2 (permalink)  
Antiguo 29/07/2015, 02:53
 
Fecha de Ingreso: octubre-2008
Mensajes: 276
Antigüedad: 16 años
Puntos: 1
Respuesta: Establecer valor en campo de modelo desde views.py y no funciona HttpRespo

Lo he solucionado, adjunto el código:

Código Python:
Ver original
  1. def Item_create(request):
  2.     context = {'next': '/Item/create/'}
  3.     form = context['form'] = ItemForm(request.POST or None)
  4.  
  5.     if not form.is_valid():
  6.         return render(request, 'Item-edit.html', context)
  7.  
  8.     Item_name = request.POST['Item_name']
  9.     if Item.objects.filter(Item_name=Item_name).exists():
  10.         context['messages'] = "Item '{}' already exists".format(item)
  11.         return render(request, 'Item-edit.html', context)
  12.  
  13.     item = form.save(commit=False)
  14.     item.test = datetime.datetime.now()
  15.     item.save()
  16.  
  17. #    Item(**form.cleaned_data).save()
  18.     return HttpResponseRedirect("/Item/list/")
__________________
Uso Apache 2.2 con PHP 5.5.9 y MySQL 5.1
Uso Eclipse IDE for Java Developers, Version: Mars.1 Release (4.5.1), Build id: 20150924-1200 para programar en Java bajo Windows

Etiquetas: campo, establecer, modelo, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:10.