2014-03-29 33 views
0

我有一个网站,用户可以将图像“保存”到相册中。它们与ManyToMany IE有关:如何标记每个收藏项目?

class Image(models.Model): 
    album = models.ManyToManyField('Album', blank=True, null=True) 

class Album(models.Model): 
    name = models.CharField(max_length=64) 
    user = models.ForeignKey(User) 

我可以很容易地显示用户曾经保存的所有图像的列表。但是有一个单独的页面,用户可以发现新图像。

如何从该页面隐藏所有现有的已保存图像?是否有查询获取该用户保存的图像列表中的所有最近的图像而不是

另外,如果我确实把他们全部拉出来,我可以轻松地添加一个属性给那些在页面上看起来不同的属性吗? IE Pinterest上,如果你有一个像以前收藏的核心是有色

我发现这个职位,但我不明白,在Ruby中给出的代码示例:How to 'hide-users' in application

我知道我可以只创建一个ID的大列表,并说:

if image.id in user_saved_list: 
    #add CSS class 

但这似乎是做错事情的错误方式。

回答

1
images_not_in_users_albums = Image.objects.exclude(album__user=user) 

如果你想先拉他们,并显示哪些是在相册中,你的方法看起来不错。

+0

谢谢,我对数据库和Django来说很新,所以不知道排除函数或同等的SQL查询是否存在。 – sricks