【问题标题】:How to implement Add to WishList for a Product in Django?如何在 Django 中为产品实现添加到愿望清单?
【发布时间】:2019-06-13 12:38:42
【问题描述】:

我正在实现一个应用程序,用户可以在其中创建购物清单并可以搜索产品并将产品添加到购物清单。

我被困在“如何添加到列表”部分。我创建的模型如下:

class Product(models.Model):
    pid = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=100, db_index=True)
    description = models.TextField(blank=True)

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse('shop:product_detail', args=[self.pid, self.slug])


class ShoppingList(models.Model):
    user = models.ForeignKey(User, related_name='shoplist', on_delete=models.CASCADE)
    list_name = models.CharField(max_length=20)
    items = models.ManyToManyField(Product)
    slug = models.SlugField(max_length=150, db_index=True)

    def __str__(self):
        return self.list_name

    def get_absolute_url(self):
        return reverse('shop:item_list', args=[self.slug])

在查看每个产品的模板中,我有以下内容

<h3>{{ product.name }}</h3>
<a href="(What is to be written here)">ADD</a>

当点击添加按钮时,我需要将通过 get_absolute_url 显示的特定产品添加到购物清单中。

我不知道接下来要采取什么步骤。请帮忙。

【问题讨论】:

    标签: python django


    【解决方案1】:

    您需要创建一个新视图以将产品添加到 ShoppingList。

    并使用 URL 链接它

    例子:

    模板

    <a href="{% url 'app:add_product' product.pk %}">ADD</a>
    

    urls.py

    path("cart/add-product/<int:pk>/", ProductAddView.as_view(), name="add_product"),
    

    【讨论】:

      【解决方案2】:

      首先为您的愿望清单创建一个模型,如下所示

      class Wishlist(models.Model):
      user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)# here CASCADE is the behavior to adopt when the referenced object(because it is a foreign key) is deleted. it is not specific to django,this is an sql standard.
      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
      

      然后创建一个用于在愿望清单中添加项目的函数....我尝试过这种方式...

      @login_required
      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,
         )
      
         messages.info(request,'The item was added to your wishlist')
         return redirect('core:product_detail',slug=slug)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-17
        • 1970-01-01
        • 2014-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多