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