如何在django视图中删除对象?

时间:2015-05-27 15:06:35

标签: python django

我有一个型号产品:

class Product(models.Model):
    name = models.CharField(verbose_name="name", max_length=40)
    cost = models.FloatField(verbose_name="price")

    def __unicode__(self):
        return self.name

我创建了一个视图,我可以在其中添加新产品但是如何删除这些产品?

我的想法:

def delete_product(request, pk):
    if request.method == "POST":
        if form.is_valid():
            product = form.delete(commit=False)
            product.delete()
            return redirect('homeshop.views.product_list', pk=product.pk)

但接下来呢?我添加到模板(我可以编辑产品并保存它)但它不起作用:

{{ delete_product }}

现在在我的模板中:

{% block content %}
    <h1>Nowy wydatek</h1>
    <form method="POST" class="product-form">{% csrf_token %}
        {{ form.as_p }}
        <button type="submit" class="save btn btn-default">Save</button>
    </form>
{% endblock %}

1 个答案:

答案 0 :(得分:2)

你需要做这样的事情:

template.html

{% for product in products %}
{% csrf_token %}
...
<form action="{% url 'delete_product' product.id %}" method="POST">
  <button type="submit">Delete</button>
</form>
...
{% endfor %}

然后你需要更新你的urls.py,以便在访问正确的URL时定义一个调用你删除功能的URL。

    url(
        r'^delete/<product_id>$',
        'delete_product',
        name='delete_product'
    )

我不确切知道你的urls.py是如何布局的,所以你的网址可能看起来有点不同。