从 DeleteView 中的相关模型对象引用参数以传递给我的 get_success_url?
Refeencing a parameter from a related model object inside a DeleteView to pass to my get_success_url?
我有这个模型,与我的用户模式模型相关:
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
查看我的 EntrepreneurshipOffer
对象的 URL 是:
# 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
class 的视图和 get_success_url
方法,我在其中调用 url 列出传递命名空间和 URL上面提到的名字,加上URL需要的username
参数
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
参数已通过 [=25 添加到工作流中=] 我得到这个错误:
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]+)/$']
我是基于 class 的视图的新手,所以我确信有一个明显的解决方法,但我还没有找到它。
非常感谢任何帮助。谢谢。
你的url是这样定义的:
url(r'^by/u/(?P<username>[-\w]+)/$',
EntrepreneurshipOffersByUser.as_view(),
name='list'),
]
因此它需要一个username
参数。但是,您尝试将其称为
reverse_lazy("offer:list", kwargs={'created_by': entrepreneurship_offer.created_by.username})
即使用 created_by
。尝试将其更改为
reverse_lazy("offer:list", kwargs={'username': entrepreneurship_offer.created_by.username})
它应该可以工作(或者至少应该抛出一个不同的错误)。
我有这个模型,与我的用户模式模型相关:
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
查看我的 EntrepreneurshipOffer
对象的 URL 是:
# 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
class 的视图和 get_success_url
方法,我在其中调用 url 列出传递命名空间和 URL上面提到的名字,加上URL需要的username
参数
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
参数已通过 [=25 添加到工作流中=] 我得到这个错误:
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]+)/$']
我是基于 class 的视图的新手,所以我确信有一个明显的解决方法,但我还没有找到它。
非常感谢任何帮助。谢谢。
你的url是这样定义的:
url(r'^by/u/(?P<username>[-\w]+)/$',
EntrepreneurshipOffersByUser.as_view(),
name='list'),
]
因此它需要一个username
参数。但是,您尝试将其称为
reverse_lazy("offer:list", kwargs={'created_by': entrepreneurship_offer.created_by.username})
即使用 created_by
。尝试将其更改为
reverse_lazy("offer:list", kwargs={'username': entrepreneurship_offer.created_by.username})
它应该可以工作(或者至少应该抛出一个不同的错误)。