У меня есть эта модель, связанная с моей моделью пользовательской схемы:
class EntrepreneurshipOffer(models.Model):
created_by = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE
)
...
Кроме того, у меня есть представление с именем EntrepreneurshipOffersByUser
, которое позволяет мне перечислить все предложения, которые я создал.
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
URL-адреса для просмотра моих EntrepreneurshipOffer
объектов:
# 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'),
]
Мой вопрос связан с целью удаления EntrepreneurshipOffer
и последующего перенаправления рабочего процесса на мои объекты списка EntrepreneurshipOffer
, упомянутые выше.
У меня есть представление на основе класса EntrepreneurshipOfferDeleteView
с методом get_success_url
, в котором я вызываю URL-адрес, чтобы перечислить мои объекты, передающие пространство имен и имя URL-адреса, упомянутое выше, добавляя параметр username
, требуемый URL-адресом.
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})
Мне нужно передать параметр username
, но, похоже, я делаю не так, потому что, несмотря на то, что параметр username
добавлен в рабочий процесс, через self.get_object()
я получаю эту ошибку:
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]+)/$']
Я новичок в представлениях на основе классов, поэтому я уверен, что для этого есть очевидное решение, но я его еще не нашел.
Буду признателен за любую оказанную помощь. Спасибо.