1

サイト上のすべての写真をユーザーに表示したいと考えています。別のページで、ユーザーが気に入った写真を表示します。

機能を確認した後、ユーザーが既に気に入った写真を 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()

ビュー.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 %}    
4

1 に答える 1

0

これを試すことができます:

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 %} 

ドキュメントはこちら

コンテキストで変数を送信することを確認してください

于 2013-08-17T03:05:31.267 に答える