我有一个型号产品:
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 %}
答案 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是如何布局的,所以你的网址可能看起来有点不同。