Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >添加到django中的收藏列表

添加到django中的收藏列表
EN

Stack Overflow用户
提问于 2021-02-18 09:24:18
回答 1查看 66关注 0票数 0

我已经在我的网站的产品页面上为每个产品添加了添加到收藏夹列表功能,用户可以将任何产品添加到他们的收藏夹列表中。但是,如果用户已经将该产品添加到收藏夹列表中,我希望显示单词remove而不是单词add,这样,如果他愿意,他可以将该产品从他的收藏列表中删除。

但会出现以下错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
AttributeError: 'QuerySet' object has no attribute 'favourite'



# model

class Product(models.Model):
    title = models.CharField(max_length=200)
    favourite = models.ManyToManyField(User, related_name='user_favourite')

# view

def product(request):
    products = Product.objects.all()
    is_favourite = False
    if products.favourite.filter(id=request.user.id).exists():
        is_favourite = True
    context = {'products': products, 'is_favourite': is_favourite}

#template

    {% if is_favourite %}
    <a  href="{% url 'home:favourite' product.id %}"> remove </a>
    {% else %}
     <a  href="{% url 'home:favourite' product.id %}"> add </a>
    {% endif %}
EN

回答 1

Stack Overflow用户

发布于 2021-02-18 09:30:44

试试这个views.py:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404
def add_product(request,pk):
     product = get_object_or_404(Product,pk=pk)
     if request.user not in product.favourite.all():
         product.favourite.add(request.user)
     return HttpResponseRedirect(' --the url that you want to redirect the 
                user --')

def remove_product(request,pk):
     product = get_object_or_404(Product,pk=pk)
     if request.user in product.favourite.all():
         product.favourite.remove(request.user)
     return HttpResponseRedirect(' --the url that you want to redirect the 
        user --')

def product(request):
    products = Product.objects.all()
    context = {'products': products}

urls.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   urlpatterns = [
     path('product/<int:pk>/add',views.add_product,name='add_product'),
     path('product/<int:pk>/remove',views.remove_product,name='remove_product'),
     ]

#模板

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 {% for product in products %}
     <!-- you should create a view for add and remove  -->
    {% if request.user in product.favourite.all %}
    <a  href="{% url 'home:remove_product' product.pk %}"> remove </a>
    {% else %}
     <a  href="{% url 'home:add_product' product.pk %}"> add </a>
    {% endif %}
 {% empty %}
 <h1>No products for now</h1>
{% endfor %}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66257014

复制
相关文章
Django实战-应用列表
Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
小团子
2019/09/05
6030
Django实战-应用列表
Django(1)初识Django「建议收藏」
Django是一个开放源代码的Web应用框架,由Python写成,最初用于管理劳伦斯出版集团旗下的一些以新闻内容为主的网站,即CMS(内容管理系统)软件,于2005年7月在BSD许可证下发布,这套框架是以比利时的吉普赛爵士吉他手Django Reinhardt来命名的。Django采用了MTV的框架模式,即模型Model、模板Template和视图(Views),三者之间各自负责不同的职责。
全栈程序员站长
2022/09/19
2.8K0
for循环将字典添加到列表中出现覆盖前面数据的问题
我们可以看到上面的代码,我们通过for循环输入了3次不同的用户名和密码,并且添加到 user_list 的列表中,但是最终 user_list 打印了三次相同的数据
全栈程序员站长
2022/06/29
4.5K0
Django实现收藏功能
我的 Django 项目里的用户可以发图片。 我想实现一个收藏功能,就是用户可以收藏其他用户发布的图片。 粗略想了下,model应该这样写:
菲宇
2022/05/06
9750
Django 教程 --- Django中的视图
Django视图是Django M V T结构的重要参与者之一。视图是用户界面,即您呈现网站时在浏览器中看到的内容。它由HTML / CSS / Javascript和Jinja文件表示。根据Django文档,视图函数是一个Python函数,它接受Web请求并返回Web响应。此响应可以是网页的HTML内容,重定向,404错误,XML文档或图像(Web浏览器可以显示的任何内容)
公众号---人生代码
2020/05/26
3K0
Django 教程 --- Django中的视图
【收藏】Python 爬虫的工具列表大全
这个列表包含与网页抓取和数据处理的 Python 库。 网络 通用 urllib -网络库(stdlib)。 requests -网络库。 grab – 网络库(基于 pycurl)。 pycurl – 网络库(绑定 libcurl)。 urllib3 – Python HTTP 库,安全连接池、支持文件 post、可用性高。 httplib2 – 网络库。 RoboBrowser – 一个简单的、极具 Python 风格的 Python 库,无需独立的浏览器即可浏览网页。 MechanicalSoup
沈唁
2018/05/24
1.9K0
Django 如何获取 Model 字段列表?
通过 get_fields() 方法会返回一个 tuple,每个元素都是 model field 类型。
AlwaysBeta
2022/05/06
2.1K0
Django 2.1.7 Admin - 列表页选项
https://docs.djangoproject.com/zh-hans/2.1/intro/tutorial07/
Devops海洋的渔夫
2019/07/08
1.1K0
Django 2.1.7 Admin - 列表页选项
python中的列表
列表是由一系列特定顺序排列的元素组成。你可以创建包含字母表中所有字母,数字0~9或所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。鉴于列表通常包含多个元素,给列表指定一个表示复数的名称(如letters、digits或names)是个不错的主意。
狼啸风云
2019/01/28
5.6K0
Python中的列表
列表 是一种用于保存一系列有序项目的集合,也就是说,你可以利用列表保存一串项目的序 列。想象起来也不难,你可以想象你有一张购物清单,上面列出了需要购买的商品,除开在 购物清单上你可能为每件物品都单独列一行,在 Python 中你需要在它们之间多加上一个逗 号。
benym
2022/07/14
5K0
Python中的列表
序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。 1.列表 数组:存储同一种数据类型的集合 scores = [12,23,45] 列表(打了激素的数组):可以存储任意数据类型
py3study
2020/01/10
5.2K0
Django中的QuerySet
  查询集,类似一个列表,包含了满足查询条件的所有项。QuerySet 可以被构造,过滤,切片,做为参数传递,这些行为都不会对数据库进行操作。只有你查询的时候才真正的操作数据库。意味着QuerySet是惰性执行的----即创建查询集不会带来任何的数据库访问,直到查询集需要求值的时候,Django才会真正运行这个查询。
forxtz
2020/10/10
1.4K0
python中列表排序,字典排序,列表中的字典排序
key= lambda dict1:dict1[0] #dict1[0]表示按键,dict1[1]表示按值。
用户8346838
2021/03/10
9.1K0
Django模糊查询「建议收藏」
参考文章: http://www.guojl.com/article/13/ https://www.douban.com/note/505215076/ http://xinleisky.blog.sohu.com/244421023.html http://blog.sina.com.cn/s/blog_9e2e84050101j3ch.html
全栈程序员站长
2022/09/02
6260
Django中的信号
Django中内置的signal Django中提供了"信号调度",用于在框架执行操作时解耦. 一些动作发生的时候,系统会根据信号定义的函数执行相应的操作 Model_signals pre_init # Django中的model对象执行其构造方法前,自动触发 post_init # Django中的model对象执行其构造方法后,自动触发 pre_save # Djan
用户1214487
2018/01/24
1.5K0
Django中的信号
django机构收藏功能实现
Django2.0.8+xadmin2实现在线学习网站,课程、讲师、机构、用户收藏功能。GitHub地址:https://github.com/xyliurui/OnlineLearningPlatform ;Django版本:2.0.8
菲宇
2019/07/31
9670
框架篇-Django博客应用-文章列表
1.首页指的是博客首页 /index/,首页分两栏,左边放文章列表,右边可根据个人喜好放一些标签、最新评论...
小团子
2019/07/18
5490
框架篇-Django博客应用-文章列表
点击加载更多

相似问题

Django -将产品添加到收藏列表中

12

如何在django中显示收藏夹列表

112

将用户添加到收藏夹列表中

70

如何将活动添加到收藏列表中?

13

将列表视图中的项目添加到收藏列表

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文