Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django ORM-通过模型查询多对多?_Python_Sql_Django - Fatal编程技术网

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

Python Django ORM-通过模型查询多对多?,python,sql,django,Python,Sql,Django,因此,我试图在Django中实现一个用户收藏夹系统。我需要存储Gallery对象被偏爱的时间,所以我使用Django的模式。正如您在下面看到的,我有一个Gallery对象,它与喜欢它的用户具有多对多关系,而Favorite对象与User和Gallery具有多对一关系。我想做一些事情,比如显示一个包含所有用户收藏夹的页面,查询用户收藏夹以查看其中是否有某个图库,等等。这样基本上就可以获得某个用户喜欢的图库。使用ORM最简单的方法是什么,或者这是我需要编写原始SQL的原因吗 class Galler

因此,我试图在Django中实现一个用户收藏夹系统。我需要存储Gallery对象被偏爱的时间,所以我使用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可以很容易地做到这一点

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

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


有关更多示例,请参阅。

谢谢,似乎有效。我对该字段的用途感到困惑。@lucifer:因为这是从给定的
用户
实例中获取
实例集的名称,将其称为
收藏夹
会让一切更清楚。@lucifer:顺便说一下,
null=True
在M2M字段上不表示任何内容。更多细节请参见我的答案。
user.favoriters.all()  # though that is not a good related_name
if user.favoriters.filter(pk=my_gallery.pk).exists():
    pass