【问题标题】:Displaying the user's favorite products in Django在 Django 中显示用户最喜欢的产品
【发布时间】:2022-08-16 11:24:53
【问题描述】:

在 Django 中显示用户最喜欢的产品

当我想显示用户最喜欢的产品时,查询结果什么都不显示,返回我None。实际上,我想向用户展示他已将哪些产品添加到他的收藏列表中

My model, view and address Url as follows

my model:

class UserWishlist(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, blank=False, related_name=\'user_favourite\')
    products = models.ManyToManyField(Product, related_name=\'product_favourite\', blank=True, )
my url :

 path(\'wish/\', views.wish, name=\'wish\'),

my view:

def wish(request):
    data = UserWishlist.objects.get(user_id=request.user.id)
    return render(request, \'home/test.html\', {\'data\': data})

my template :
{{ data.products.name }}

    标签: django django-models django-views


    【解决方案1】:

    你的products 是一个ManyToManyField,它返回QuerySet,所以你必须把它当作一个列表来对待。您应该更可能像这样渲染它(假设 dataUserWishlist 对象):

    {% for product in data.products.all %}
        {{ product.name }}
    {% endfor %}
    

    【讨论】:

    • 如果答案对您有用,请勾选正确,以便我们知道该问题已解决。否则给一些反馈,如果它仍然不起作用。
    【解决方案2】:

    尝试这样的事情:

    {% for product in data.products.all %}
    {{ product.name }}
    {% endfor %}
    

    【讨论】:

      【解决方案3】:

      {{ data.products.name }} 返回一个列表,但您没有使用循环将其列出,对吧? 你应该使用

      {% for product in data.products.all%}
      {{product.name}}
      {% endfor %}
      

      而不是它。

      【讨论】:

      • 当我使用过滤器而不是 get 并循环它时,什么都没有显示。
      • 应该是data.products.all
      • 嗯……我忘记了。感谢提及
      猜你喜欢
      • 1970-01-01
      • 2020-09-03
      • 2016-11-09
      • 2020-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-07
      • 2020-10-07
      相关资源
      最近更新 更多