auth.user.none 和 <QuerySet []> 在 ManyToManyField 渲染中

huangapple go评论92阅读模式
英文:

auth.user.none and <QuerySet []> in ManyToManyField rendering

问题

我尝试在我的Django网站上显示喜欢某张图片的用户数量。

图片模型如下所示:

  1. class Image(models.Model):
  2. (***)
  3. users_like = models.ManyToManyField(settings.AUTH_USER_MODEL,
  4. related_name='images_liked',
  5. blank=True)

当我在模板中使用以下代码时:

  1. {{ image.users_like.all }}

我得到:

QuerySet []

当我在模板中使用以下代码时:

  1. {{ image.users_like }}

我得到

auth.User.None

这很奇怪,因为在我的管理页面上,有信息显示有人喜欢这张照片。

以下是我的视图函数:

  1. def image_detail(request, id, slug):
  2. image = get_object_or_404(Image, id=id, slug=slug)
  3. return render(request,
  4. 'images/image/detail.html',
  5. {'section': 'images',
  6. 'image': image})

我的管理页面中,用户喜欢部分显示已经喜欢这张照片的用户的用户名。如下截图:

auth.user.none 和 <QuerySet []> 在 ManyToManyField 渲染中

完整代码块如下:

  1. <h1>{{ image.title }}</h1>
  2. <p>{{ image.users_like.all }}</p>
  3. {% load thumbnail %}
  4. {% thumbnail image.image "300" as im %}
  5. <a href="{{ image.image.url }}">
  6. <img src="{{ im.url }}" class="image-detail">
  7. </a>
  8. {% endthumbnail %}
  9. {% with total_likes=image.users_like.count users_like=image.users_like.all %}
  10. <div class="image-info">
  11. <div>
  12. <span class="count">
  13. <span class="total">{{ total_likes }}</span>
  14. like{{ total_likes|pluralize }}
  15. </span>
  16. <a href="#" data-id="{{ image.id }}" data-action="{% if request.user in users_like %}un{% endif %}like" class="like button">
  17. {% if request.user not in users_like %}
  18. Like
  19. {% else %}
  20. Unlike
  21. {% endif %}
  22. </a>
  23. </div>
  24. {{ image.description|linebreaks }}
  25. </div>
  26. <div class="image-likes">
  27. {% for user in image.users_like.all %}
  28. <div>
  29. <img src="{{ user.profile.photo.url }}">
  30. <p>{{ user.first_name }}</p>
  31. </div>
  32. {% empty %}
  33. Nobody likes this image yet.
  34. {% endfor %}
  35. </div>
  36. {% endwith %}
英文:

I try to display numbers of Users who liked some image on my website written in Django.
The Image model looks like this below:<br>

  1. class Image(models.Model):
  2. (***)
  3. users_like = models.ManyToManyField(settings.AUTH_USER_MODEL,
  4. related_name=&#39;images_liked&#39;,
  5. blank=True)

When I use in my template:
>{{image.users_like.all}}

I get :

QuerySet [],

when I use in templates
>{{image.users_like}}

I get

auth.User.None.

It's weird because in my admin page I have information that someone liked this photo.

Below my view function:

  1. def image_detail(request, id, slug):
  2. image = get_object_or_404(Image, id=id, slug=slug)
  3. return render(request,
  4. &#39;images/image/detail.html&#39;,
  5. {&#39;section&#39;: &#39;images&#39;,
  6. &#39;image&#39;: image})

EDIT

My admin page, in Users like section display usernames of user who already liked the photo. PrtSc below:<br/>
auth.user.none 和 <QuerySet []> 在 ManyToManyField 渲染中

FULL BLOCK

  1. &lt;h1&gt;{{ image.title }}&lt;/h1&gt;
  2. `&lt;p&gt;{{image.users_like.all}}&lt;/p&gt;
  3. {% load thumbnail %}
  4. {% thumbnail image.image &quot;300&quot; as im %}
  5. &lt;a href=&quot;{{ image.image.url }}&quot;&gt;
  6. &lt;img src=&quot;{{ im.url }}&quot; class=&quot;image-detail&quot;&gt;
  7. &lt;/a&gt;
  8. {% endthumbnail %}
  9. {% with total_likes=image.users_like.count users_like=image.users_like.all %}
  10. &lt;div class=&quot;image-info&quot;&gt;
  11. &lt;div&gt;
  12. &lt;span class=&quot;count&quot;&gt;
  13. &lt;span class=&quot;total&quot;&gt;{{ total_likes }}&lt;/span&gt;
  14. like{{ total_likes|pluralize }}
  15. &lt;/span&gt;
  16. &lt;a href=&quot;#&quot; data-id=&quot;{{ image.id }}&quot; data-action=&quot;{% if request.user in users_like %}un{% endif %}like&quot; class=&quot;like button&quot;&gt;
  17. {% if request.user not in users_like %}
  18. Like
  19. {% else %}
  20. Unlike
  21. {% endif %}
  22. &lt;/a&gt;
  23. &lt;/div&gt;
  24. {{ image.description|linebreaks }}
  25. &lt;/div&gt;
  26. &lt;div class=&quot;image-likes&quot;&gt;
  27. {% for user in image.users_like.all %}
  28. &lt;div&gt;
  29. &lt;img src=&quot;{{ user.profile.photo.url }}&quot;&gt;
  30. &lt;p&gt;{{ user.first_name }}&lt;/p&gt;
  31. &lt;/div&gt;
  32. {% empty %}
  33. Nobody likes this image yet.
  34. {% endfor %}
  35. &lt;/div&gt;
  36. {% endwith %}

答案1

得分: 0

查询集在调用时为空。在将用户添加到image.users_like之后,问题消失了。谢谢solarissmoke。

英文:

Answer in the comments above. QuerySet was empty when called. After adding users to image.users_like the problem disappeared. Thank you solarissmoke.

huangapple
  • 本文由 发表于 2020年1月3日 20:21:58
  • 转载请务必保留本文链接:https://go.coder-hub.com/59578574.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定