Python 添加到愿望列表函数';i don’我不能像我所希望的那样正常工作

Python 添加到愿望列表函数';i don’我不能像我所希望的那样正常工作,python,django,Python,Django,这个add_to_wishlist返回两条消息,并最终得到_或_create,操作如下。但我想知道,如果第一次添加的项目显示“已添加”和下一次显示“已添加”,但当我单击按钮时,它会同时返回这两个选项。我是如何检查或查询的,它会第一次返回它添加的内容 我使用了get\u或\u create方法。据我所知,当项目不存在时,它将创建一个项目,如果已经存在,它将获取或覆盖该项目。我在“添加到购物车”中试用过,效果非常好 这是模型 class Wishlist(models.Model): use

这个add_to_wishlist返回两条消息,并最终得到_或_create,操作如下。但我想知道,如果第一次添加的项目显示“已添加”和下一次显示“已添加”,但当我单击按钮时,它会同时返回这两个选项。我是如何检查或查询的,它会第一次返回它添加的内容

我使用了get\u或\u create方法。据我所知,当项目不存在时,它将创建一个项目,如果已经存在,它将获取或覆盖该项目。我在“添加到购物车”中试用过,效果非常好

这是模型

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)