我有一个网站,用户可以将图片“保存”到相册中。它们与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)
我可以轻松显示用户曾保存的所有图像的列表。但是有一个单独的页面,用户可以在其中发现新图像。
如何隐藏该页面中所有现有的已保存图像?是否有查询来获取该用户保存的图像列表中不的所有最新图像?
另外,如果我将它们全部拉出来,我可以轻松地为这些属性添加属性,以便它们在页面上看起来不同吗?在Pinterest上的IE如果您之前已经收藏了一张图片,那么Heart就会被涂上颜色。
我发现了这篇文章,但我不理解Ruby中给出的代码示例:How to 'hide-users' in application
我知道我可以创建一个很大的ID列表并说出类似的内容:
if image.id in user_saved_list:
#add CSS class
但这似乎是错误的做事方式。
答案 0 :(得分:1)
images_not_in_users_albums = Image.objects.exclude(album__user=user)
如果您想先将它们全部拉出并显示相册中的哪些内容,那么您的方法对我来说很好。