[英]Why is my else statement not working in django rest framework?
[英]Why is this if statement not working in Django?
我只是想在 {% %} 事情中使用 django 在 html 中運行 if 語句。 statemnet 是 {% if listing in watchlist %}。 即使列表在監視列表中,它也不會使 if 語句為真。
我使用 {{ }} 來查看監視列表和列表是什么。 對於 {{ watchlist }} 我得到: <QuerySet [<Watchlists: 15: Dan1308 has added 3: The Bus(是的很酷的飛機),從 3000 開始到監視列表>]>
對於{{列表}},我得到: 3:巴士(是的,很酷的飛機),從 3000 開始
這是我的 views.py:
def listing(request, NewListings_id):
user = request.user
listing = NewListings.objects.get(pk=NewListings_id)
comments = Comments.objects.filter(listing=listing)
watchlist = Watchlists.objects.filter(user=user)
return render(request, "auctions/listing.html", {
"listing": listing,
"comments": comments,
"user": user,
"watchlist": watchlist
})
這是我的models.py:
class Watchlists(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
listing = models.ForeignKey(NewListings, on_delete=models.CASCADE)
def __str__(self):
return f"{self.id}: {self.user} has added {self.listing} to watchlist"
那么,為什么它不起作用?
watchlist = Watchlists.objects.filter(user=user)
listing = NewListings.objects.get(pk=NewListings_id)
listing
是一個NewListings
實例,而watchlist
是一個Watchlists
實例的查詢集。 所以listing
不在查詢集中。
相反,查詢集中有一個watchlist
實例,其中listing
外鍵指向listing
。
另一種方法是檢查列表是否在視圖中的監視列表中:
def listing(request, NewListings_id):
user = request.user
listing = NewListings.objects.get(pk=NewListings_id)
comments = Comments.objects.filter(listing=listing)
watchlist = Watchlists.objects.filter(user=user)
listing_in_watchlist = Watchlist.objects.filter(user=user, listing=listing).exists()
return render(request, "auctions/listing.html", {
"listing": listing,
"comments": comments,
"user": user,
"watchlist": watchlist,
"listing_in_watchlist": listing_in_watchlist,
})
現在,在模板中,您可以使用{% if listing_in_watchlist %}
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.