Como uso um UpdateView para atualizar um modelo do Django?
Estou tentando atualizar um modelo no Django usando a visualização genérica baseada em classe UpdateVie
Li a páginaAtualizando o modelo de usuário no Django com UpdateView @ baseado em clas para tentar iniciar, mas estou recebendo um erro 'objeto WSGIRequest' não tem atributo 'id'
Sou uma cara nova para o Django, então, perdoe se estou fazendo algo estúpido.
// urls.py
url(r'^portfolios/update/(?P<id>\d+)/ // 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
Na maioria das vezes, é apenas uma versão modificada do código originalmente publicado, mas achei que funcionaria. Eu sei que estou tentando recuperar o ID passado como um parâmetro GET, mas isso não parece ocorrer na variável de solicitação. Estou fazendo isso da maneira errada?
Obrigad
Edit: Eu acho que corrigi-lo, mas isso pode estar errado: eu mudei as linhas
self.object = Portfolios.objects.get(id=self.request.id)
obj = Portfolios.objects.get(id=self.request.id)
par
self.object = Portfolios.objects.get(id=self.kwargs['id'])
obj = Portfolios.objects.get(id=self.kwargs['id'])
Eu poderia estar errado
,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
Na maioria das vezes, é apenas uma versão modificada do código originalmente publicado, mas achei que funcionaria. Eu sei que estou tentando recuperar o ID passado como um parâmetro GET, mas isso não parece ocorrer na variável de solicitação. Estou fazendo isso da maneira errada?
Obrigad
Edit: Eu acho que corrigi-lo, mas isso pode estar errado: eu mudei as linhas
self.object = Portfolios.objects.get(id=self.request.id)
obj = Portfolios.objects.get(id=self.request.id)
par
self.object = Portfolios.objects.get(id=self.kwargs['id'])
obj = Portfolios.objects.get(id=self.kwargs['id'])
Eu poderia estar errado