Digamos que tengo un formulario de añadido/productos de edición (con 'usuario' campo siendo una clave externa a mi usuario) desencadenó a partir de dos funciones de visualización distintos - añadir/editar:Django paso a paso form.save
def product_add(request):
userprofile = UserProfile.objects.get(user=request.user)
if request.method == 'POST':
form = ProductAddForm(request.POST, request.FILES,)
if form.is_valid():
form.save(user=request.user)
else:
form = ProductAddForm()
return render_to_response('products/product_add.html', {
'form':form, 'user':request.user,
}, context_instance=RequestContext(request))
def product_edit(request, id):
product = get_object_or_404(Product, id=id, user=request.user)
if product.user.id!=request.user.id:
raise Http404
if request.method == 'POST':
form = ProductAddForm(request.POST, request.FILES, instance=product)
if form.is_valid():
form.save(user=request.user)
else:
form = ProductAddForm(instance=product)
return render_to_response('products/product_edit.html', {
'form':form, 'user':request.user,
}, context_instance=RequestContext(request))
método Save del formulario se ve de la siguiente manera:?
def save(self, user, *args, **kwargs):
self.instance.user = user
post = super(ProductAddForm, self).save(*args, **kwargs)
post.save()
¿Puede alguien decirme lo que está pasando en esta etapa del procedimiento salvar a paso ¿por qué llamamos súper en este formulario y cuál es la diferencia en el procesamiento de todo cuando nos edite y guarde un nuevo producto si la llamada a la función es la misma?
¿Has mirado docs.python.org para ver qué hace la función 'super'? http://docs.python.org/library/functions.html#super ¿Qué aprendiste allí? –
¿Qué quiere decir con "editar"? ¿Te refieres a "validar"? Esa es una característica separada de un Formulario. ¿O quieres decir algo más? –
¿Por "2 vistas" quiere decir "dos funciones de vista"? Si es así, ACTUALIZA tu pregunta con toda esta información. Por favor, DEJAR de agregar comentarios. Por favor, ACTUALIZA la pregunta para contener TODOS los hechos. Luego borre los comentarios. –