簡體   English   中英

如何通過 Django 模型進行查詢並在沒有 ManyToMany 關系的情況下訪問另一個 Django 模型?

[英]How to query through a Django model and get access to another Django model without a ManyToMany relationship?

我有一個名為 WatchList 的模型,其中包含一個名為 Listing 的對象,該對象通過外鍵對應於列表模型。 我希望能夠通過 WatchList 模型進行查詢,以獲取用戶特定監視列表中的所有列表,並在網頁上顯示所有列表的所有對象。 我不想使用 ManyToMany 字段來執行此操作,因為我剛剛獲得了 Web 應用程序的一個不同部分,它處理 WatchList 模型的工作。 有沒有其他方法可以做到這一點?

視圖.py

def watchlist(request):
    watchlists = WatchList.objects.filter(user=request.user)
    for listing in watchlists.listing:
        listings_needed = watchlists.listing()
    watchlist_listing = watchlists.get(listing)
    listings = Listings.objects.all().filter(watchlist_listing)
    return render(request, "auctions/watchlist.html",{
        "listings": listings
    })

模型.py

class Listings(models.Model):
    CATEGORY = [
    ("Miscellaneous", "Miscellaneous"),
    ("Movies and Television", "Movies and Television"),
    ("Sports", "Sports"),
    ("Arts and Crafts", "Arts and Crafts"),
    ("Clothing", "Clothing"),
    ("Books", "Books"),
]
    title = models.CharField(max_length=64)
    description = models.CharField(max_length=500)
    bid = models.DecimalField(max_digits=1000000000000, decimal_places=2)
    image = models.URLField(null=True, blank=True)
    category = models.CharField(max_length=64, choices=CATEGORY, default=None)
    user = models.ForeignKey(User, on_delete=models.CASCADE, default="")

class WatchList(models.Model):
    listing = models.ForeignKey(Listings, on_delete=models.CASCADE, default="")
    user = models.ForeignKey(User, on_delete=models.CASCADE, default="")

當前代碼也出現此錯誤:

arg, value = filter_expr
TypeError: cannot unpack non-iterable function object

此錯誤是由watchlist_listing = watchlists.get(listing)引起的。

我也嘗試使用 for 循環,但沒有奏效。

您可以通過在列表查詢集中向后跟蹤關系來獲取在 WatchList 模型中有條目的用戶的所有列表 - Listings.objects.filter(watchlist__user=user)

def watchlist(request):
    listings = Listings.objects.filter(watchlist__user=request.user)
    return render(request, "auctions/watchlist.html",{
        "listings": listings
    })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM