【问题标题】:Django comparing lists and filtering objectsDjango比较列表和过滤对象
【发布时间】:2013-08-19 12:37:17
【问题描述】:

我们希望向用户显示我们网站上的所有图片。在另一个页面中,我们向用户显示他/她喜欢的图片。

在查看功能后,用户在 displayallpics.html 中查看他们已经喜欢的照片是没有意义的。

我们想过滤掉用户喜欢的任何图片,并且只在 displayallpics.html 中显示用户不喜欢的照片:

这是我们想要做的 sql:

select * from alphart_picdetails where id not in (select picture_id from alphart_like where user_id = 4);

user_id = 登录的用户——我们只是无法让 django 来做。

感谢您的帮助。

models.py


class PicDetails(models.Model): 
    poster = models.ForeignKey(User)
    Title = models.CharField(max_length=50)
    date = models.DateField(("Date"), auto_now_add=True)

    def __unicode__(self):
        return self.Title

class Like(models.Model):
   user = models.ForeignKey(User)
   picture = models.ForeignKey(PicDetails)
   created = models.DateTimeField(auto_now_add=True)
   votes = models.IntegerField()

views.py

def findpics(request): #designed to return all pics posted on the site -the pics user has liked
  like_list = Like.objects.filter(user=request.user)
  user = request.user
  user_list = PicDetails.objects.filter(like=69)

  return render_to_response("displayallpics.html", {'user_list':user_list,   'like_list':like_list, 'user':user})

模板 displayallpics.html:

    {% for object in user_list %}
    {{ object.Title }} 
    {% endfor %}    

【问题讨论】:

    标签: django list filter many-to-many views


    【解决方案1】:

    你可以试试这个:

    non_liked_pics = PicDetails.objects.exclude(like__user=request.user)
    liked_pics = PicDetails.objects.filter(like__user=request.user)
    

    在模板中,

    {% for pic in non_liked_pics %}
        {{ pic.picture.Title }} 
    {% endfor %} 
    
    {% for pic in liked_pics %}
        {{ pic.picture.Title }} 
    {% endfor %} 
    

    文档here

    只要确保在上下文中发送变量

    【讨论】:

    • non_liked_pics = PicDetails.objects.exclude(like__user=request.user) 工作!就像我们需要的一样。谢谢!显然我没有足够高的代表来投票。干得好,我们在这里被困了一段时间。
    猜你喜欢
    • 2021-12-01
    • 2011-01-10
    • 2015-03-24
    • 2019-05-25
    • 1970-01-01
    • 2021-06-24
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    相关资源
    最近更新 更多