
Bernardo Augusto García Loaiza
PreguntaTengo este modelo relacionado con mi esquema de usuarios:
<code> class EntrepreneurshipOffer(models.Model): created_by = models.ForeignKey( settings.AUTH_USER_MODEL, on_delete=models.CASCADE ) ...
Además tengo una vista llamada
EntrepreneurshipOffersByUser
<code> class EntrepreneurshipOffersByUser(LoginRequiredMixin, UserProfileDataMixin, ListView): template_name = 'entrepreneurship/my_entrepreneurship_offer_list.html' def get_queryset(self, *args, **kwargs): user = self.request.user queryset_list = EntrepreneurshipOffer.objects.filter(created_by__username=user.username) return queryset_list def get_context_data(self, **kwargs): context = super(EntrepreneurshipOffersByUser, self).get_context_data(**kwargs) user = self.request.user entrepreneurship_offers = EntrepreneurshipOffer.objects.filter(created_by__username=user.username) context['offers_by_user'] = entrepreneurship_offers return context
Los
URLs
EntrepreneurshipOffer
<code> # Main URL which call to Entrepreneurship Offer URLs url(r'^offer/entrepreneurship/', include('entrepreneurship.urls', namespace='offer')), # List Entrepreneurship Offer's user url(r'^by/u/(?P<username>[-\w]+)/$', EntrepreneurshipOffersByUser.as_view(), name='list'), ]
Mi pregunta esta relacionada con lo siguiente: Quiero borrar un objeto
EntrepreneurshipOffer
EntrepreneurshipOffer
Para esto, tengo la vista basada en clase
EntrepreneurshipOfferDeleteView
get_success_url
EntrepreneurshipOffer
reverse_lazy
<code> class EntrepreneurshipOfferDeleteView(SuccessMessageMixin, UserProfileDataMixin, LoginRequiredMixin, DeleteView): model = EntrepreneurshipOffer #success_url = reverse_lazy("offer:list") success_message = "Oferta de emprendimiento eliminada con éxito" def get_success_url(self): entrepreneurship_offer = self.get_object() #print(entrepreneurship_offer) return reverse_lazy("offer:list", kwargs={'created_by': entrepreneurship_offer.created_by.username})
Necesito pasar el parámetro
username
username
self.get_object()
<code> NoReverseMatch at /offer/entrepreneurship/modelo-de-negocio/delete/ Reverse for 'list' with arguments '()' and keyword arguments '{'created_by': 'bgarcial'}' not found. 1 pattern(s) tried: ['offer/entrepreneurship/by/u/(?P<username>[-\\w]+)/$']
Estoy aprendiendo a mirar como funcionan las vistas basadas en clase, estoy seguro que existe una forma obvia de hacer lo que describo acá, pero no ha le encontrado.
Cualquier ayuda es altamente apreciada.

Diego Alexander Forero Higuera
Simplemente en tu kwars cambia created_by por username
return reverse_lazy("offer:list", kwargs={'username': entrepreneurship_offer.created_by.username})
Otra cosa que te recomiendo viendo el código es que no tienes que usar el lookup para llegar al username, ya que created_by es de tipo usuario basta con hacer esto
entrepreneurship_offers = EntrepreneurshipOffer.objects.filter(created_by=user)