En una aplicación de mini blog, quiero crear una función de eliminación para que el propietario del blog pueda eliminar sus entradas (y solo sus entradas). Supongo que los únicos métodos para hacerlo, es usar un formulario. Aunque mi código de borrado parece claro y correcto, no funciona. Mi código:Eliminación de objetos en Django
def delete_new(request,id):
u = New.objects.get(pk=id).delete()
if request.method == 'POST':
form = DeleteNewForm(request.POST)
form.u.delete()
form.save()
return render_to_response('news/deleteNew.html', {
'form': form,
},
context_instance=RequestContext(request))
y en la plantilla:
<a href='/news/delete_new/{{object.id}}/'> Delete</a> <br />
Es este un enfoque correcto? Quiero decir, ¿crear una forma para esto? también, la única forma de tomar la publicación de blog asociada con el enlace de eliminación es tener una identificación como parámetro. ¿Es correcto? Quiero decir, tal vez cualquier usuario puede escribir otra identificación, en la url, y eliminar otra entrada (eventualmente no una de las suyas)
que rueda sin problemas, y en una sola línea: u = New.objects. filter (created_by = request.user) .get (pk = id) .delete() ¡gracias! :) – dana
Exactamente, puede agregar algún control de errores si no hay tal objeto nuevo para un usuario dado y mostrar un buen mensaje de error (con su trazador de líneas, fallará ruidosamente con error de 500). Pero básicamente eso es todo lo que debes hacer aquí :) Me alegra que mi respuesta haya sido útil para ti. – dzida
Recomiendo encarecidamente usar un formulario y verificar POST, porque se supone que GETs a páginas no cambian el estado en el servidor. (Aunque, en la práctica, lo que está sucediendo aquí es relativamente "seguro") –