簡體   English   中英

Django ORM-通過模型查詢多對多嗎?

[英]Django ORM - querying many to many through models?

因此,我正在嘗試在Django中實現用戶收藏夾系統。 我需要存儲收藏夾對象的時間,因此我正在使用Django的多對多貫穿模式。 正如您在下面看到的,我有一個Gallery對象,它與喜歡它的用戶有多對多的關系,還有一個Favorite對象,它與User和Gallery有多對一的關系。 我想做一些事情,例如顯示一個頁面,上面有所有用戶的收藏夾,查詢用戶的收藏夾以查看其中是否有某個圖庫,等等。因此,基本上可以得到某個用戶喜歡的畫廊。 用ORM做到這一點的最簡單方法是什么,或者這是我需要編寫原始SQL的東西嗎?

class Gallery(models.Model):
    favoriters = models.ManyToManyField(
    User, through='Favorite', null=True, related_name="favoriters")

    def __unicode__(self):
        return self.name        

class Favorite(models.Model):
    user = models.ForeignKey(User)
    gallery = models.ForeignKey(Gallery)
    date = models.DateField(auto_now_add=True)

謝謝。

您可以使用Django ORM輕松完成此操作。

在頁面上顯示所有用戶的收藏夾

user.favoriters.all()  # though that is not a good related_name

查詢用戶的收藏夾以查看其中是否有某個圖庫

if user.favoriters.filter(pk=my_gallery.pk).exists():
    pass

有關更多示例,請參見文檔

暫無
暫無

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

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