Django ORM通过模型查询多对多?

2024-06-11 14:37:31 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我尝试在Django中实现一个用户收藏夹系统。我需要存储Gallery对象被偏爱的时间,所以我使用Django的many to many through模式。正如你在下面看到的,我有一个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)

谢谢。你知道吗


Tags: 对象django用户model关系models画廊gallery
1条回答
网友
1楼 · 发布于 2024-06-11 14:37:31

用Django ORM可以很容易地做到这一点。你知道吗

显示包含所有用户收藏夹的页面

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

查询用户的收藏夹,查看其中是否有某个库

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

有关更多示例,请参见the documentation。你知道吗

相关问题 更多 >