Как перенаправить на другое представление с аргументами и 'cannot unpack non-iterable Listing object' django
По сути, я пытаюсь сделать следующее: позволить пользователю удалять свои собственные комментарии и просто обновлять страницу со всеми данными этой страницы, загруженными из моего представления 'view'. Однако я не уверен в том, как лучше всего это сделать, поскольку моя функция представления имеет несколько переменных в своем контексте, к которым я не могу получить доступ из моего представления 'delete_comment'. Также я продолжаю сталкиваться с ошибкой, когда пытаюсь получить доступ к данному листингу через связь внешнего ключа, и получаю ошибку "cannot unpack non-iterable Listing object", несмотря на то, что с каждым комментарием связан свой листинг. Вот все, что связано с тем, чего я пытаюсь достичь.
views.py
def view(request, listing_title):
listing = Listing.objects.get(title=listing_title)
# If someone is logged in
user = request.user
if user.id != None:
try:
watchlist = PersonalWatchList.objects.get(user=request.user)
watchlist_listings = watchlist.listings.all()
except:
watchlist = None
watchlist_listings = None
return render(request, "auctions/listing.html", {
"listing": listing,
"watchlist": watchlist,
"watchlist_listings": watchlist_listings,
"comments": Comment.objects.filter(item=listing).order_by('-date_created')
})
else:
return render(request, "auctions/listing.html", {
"listing": listing,
"comments": Comment.objects.filter(item=listing).order_by('-date_created')
})
def delete_comment(request, comment_id):
comment_details = Comment.objects.get(id=comment_id)
# item is None? Supposed to be of type 'Listing'
auction = comment_details.item
listing = Listing.objects.get(auction)
listing_title = listing.title
Comment.objects.get(id=comment_id).delete()
# Need some advice on this line
return redirect(f'/view/{listing_title}')
Фрагмент urls.py
path("view/<str:listing_title>", views.view, name="view"),
path("delete_comment/<int:comment_id>", views.delete_comment, name="delete_comment")
models.py
class Comment(models.Model):
comment = models.CharField(max_length=64)
item = models.ForeignKey('Listing', on_delete=models.CASCADE, null=True)
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
date_created = models.DateTimeField(auto_now=True)
def __str__(self):
return f"{self.comment}"