Django 使用查询集对象的属性

Django Using attribute of queryset object

我为我的页面创建 comments/messages 区域。我也为他们创建了 like buttons。当用户进入页面时,我想显示他默认的喜欢按钮(喜欢或不喜欢)。 如果用户在点赞列表中我想显示他不像但是我想显示点赞按钮如果它不在列表中,也就是说,如果它不在列表中还喜欢

观看次数:

def detail_post(request,_detail):
   postDetail =  UserPosts.objects.get(pk = _detail) #This is post
   messages = UserMessages.objects.all().filter(post_id =postDetail.id) #This is comment of post

   # I tried this but iit is not works
   for x in messages:
      total = x.like_message.all()
      print(total)    
   context= {
    "detail":postDetail,
    "messages":messages,
   }

模板:

{% for message in messages %}
     {% if message.username_id == request.user.id %}
           <button class="btn btn-primary btn-sm" title="You can't like your message" disabled >Like</button>
     {% else %}
          <button class="btn btn-primary btn-sm text-white btn-like {{ message.id }} " type="submit" name="usermessages_id"
          value="{{ message.id }}" id="{{ message.id }}"> Like </button>
      {% endif %}
{% endfor %}

这是我在 Views 文件中编写的 for 循环的输出:

  <QuerySet [<User: vahandag>]>
  <QuerySet [<User: vahandag>, <User: GladyaTH0R>, <User: user2>, <User: user3>, <User: vahandag1905>]>
  <QuerySet []>
  <QuerySet []>
  <QuerySet [<User: vahandag1905>]>
  <QuerySet [<User: vahandag1905>]>
  <QuerySet [<User: vahandag>]>

我想要这个:

{% if message.username in message.like_message.all() %}
      <button> Unlike </button>
{% else %}
      <button> Like </button>
{% endif %}

有人知道吗?

试试这个

{% if message.username in message.like_message.all %}
      <button> Unlike </button>
{% else %}
      <button> Like </button>
{% endif %}

您不必在模板引擎中以“()”结束方法

试试这个

def detail_post(request,_detail):
    postDetail =  UserPosts.objects.get(pk = _detail) 
    messages = UserMessages.objects.all().filter(post_id=postDetail.id).values() 
    #This is comment of post

    # I tried this but iit is not works
    for x in messages:
        total = x.like_message.all()
        print(total)    
        context= {
           "detail":postDetail,
           "messages":messages,
           }