Python 添加到愿望列表函数';i don’我不能像我所希望的那样正常工作
这个add_to_wishlist返回两条消息,并最终得到_或_create,操作如下。但我想知道,如果第一次添加的项目显示“已添加”和下一次显示“已添加”,但当我单击按钮时,它会同时返回这两个选项。我是如何检查或查询的,它会第一次返回它添加的内容 我使用了get\u或\u create方法。据我所知,当项目不存在时,它将创建一个项目,如果已经存在,它将获取或覆盖该项目。我在“添加到购物车”中试用过,效果非常好 这是模型Python 添加到愿望列表函数';i don’我不能像我所希望的那样正常工作,python,django,Python,Django,这个add_to_wishlist返回两条消息,并最终得到_或_create,操作如下。但我想知道,如果第一次添加的项目显示“已添加”和下一次显示“已添加”,但当我单击按钮时,它会同时返回这两个选项。我是如何检查或查询的,它会第一次返回它添加的内容 我使用了get\u或\u create方法。据我所知,当项目不存在时,它将创建一个项目,如果已经存在,它将获取或覆盖该项目。我在“添加到购物车”中试用过,效果非常好 这是模型 class Wishlist(models.Model): use
class Wishlist(models.Model):
user =
models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
wished_item = models.ForeignKey(Item,on_delete=models.CASCADE)
slug = models.CharField(max_length=30,null=True,blank=True)
added_date = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.wished_item.title
下面是函数
它显示两条消息。。。。但是我想要一个根据动作第一次添加或者再次添加的
该项目已添加到您的愿望列表中
项目已在您的愿望列表中检查
愿望列表。exists()
应用获取或创建后
方法将始终返回真值
值。
另外,当您使用get\u或\u create
作为所希望的项目
时,这样做是徒劳的
wish_list_qs = Wishlist.objects.filter(user = request.user, slug=item.slug)
然后在其上应用exists()
方法。上面的语句将返回您创建的对象,即
所希望的\u项
您需要在代码中进行的更改是
def add_to_wishlist(request,slug):
item = get_object_or_404(Item,slug=slug)
wished_item,created =
Wishlist.objects.get_or_create(wished_item=item,
slug = item.slug,
user = request.user,
) # Creating or extracting the wished item
if created:
# if new wished_item created
messages.info(request,'The item was added to your wishlist')
else:
# if wished_item existed previously
messages.info(request,'The item was already in your wishlist')
return redirect('core:product_detail',slug=slug)
将if wish_list_qs.exists():更改为if not created:并在else部分中添加messages.info(请求,“该项目已添加到您的愿望列表中”)
def add_to_wishlist(request,slug):
item = get_object_or_404(Item,slug=slug)
wished_item,created =
Wishlist.objects.get_or_create(wished_item=item,
slug = item.slug,
user = request.user,
) # Creating or extracting the wished item
if created:
# if new wished_item created
messages.info(request,'The item was added to your wishlist')
else:
# if wished_item existed previously
messages.info(request,'The item was already in your wishlist')
return redirect('core:product_detail',slug=slug)