Estoy intentando actualizar un modelo en Django utilizando la vista genérica basada en clase UpdateView.¿Cómo uso un UpdateView para actualizar un modelo de Django?
leí la página Updating User model in Django with class based UpdateView para tratar de ayudarme a empezar, pero estoy recibiendo un error objeto 'WSGIRequest' no tiene atributo 'id'
Soy una cara nueva a Django, por favor perdona si estoy haciendo algo estúpido
//urls.py
url(r'^portfolios/update/(?P<id>\d+)/$',PortfoliosUpdateView.as_view()),
//views.py
class PortfoliosUpdateView(UpdateView):
form_class = PortfoliosCreateForm
model = Portfolios
template_name = 'portfolios/create.html'
def get(self, request, **kwargs):
self.object = Portfolios.objects.get(id=self.request.id)
form_class = self.get_form_class()
form = self.get_form(form_class)
context = self.get_context_data(object=self.object, form=form)
return self.render_to_response(context)
def get_object(self, queryset=None):
obj = Portfolios.objects.get(id=self.request.id)
return obj
sobre todo es sólo una versión modificada del código escrito originalmente, pero pensé que iba a trabajar. Sé que estoy intentando recuperar el ID pasado como un parámetro GET, pero eso no parece venir en la variable de solicitud. ¿Voy por esto de la manera incorrecta?
Gracias
Editar: Creo que me fijo, pero esto puede estar equivocado: he cambiado las líneas
self.object = Portfolios.objects.get(id=self.request.id)
obj = Portfolios.objects.get(id=self.request.id)
a
self.object = Portfolios.objects.get(id=self.kwargs['id'])
obj = Portfolios.objects.get(id=self.kwargs['id'])
podría estar equivocado.
Su actualización soluciona el error original correctamente. Sin embargo, no veo por qué tiene que anular el método '' get'', parece que '' UpdateView'' lo hace de todos modos. – Raekkeri