python - 如何在 django View 中删除对象?

标签 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

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

我的想法:

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 %}

最佳答案

你需要做这样的事情:

模板.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 是如何布局的,所以你的 URL 可能看起来有点不同。

关于python - 如何在 django View 中删除对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30486354/

相关文章:

python - 着色接近点

django pisa - pagenumber 仅适用于两页或更多页 - 显示总页数

python - 如何在 Django 管理表单 save_model 中获取字段值

python - view.py 中的 Django PasswordChangeForm 不工作

python - 断言isinstance(地址,(元组,列表,str)), "tuple or str expected"AssertionError : tuple or str expected

python - Django 在托管应用程序 pythonanywhere 上打印语句/调试

python - 使用 pandas 从 json 文件中提取数据时, bool 值会自动转换为大写

python - 在 OpenCV 中绘制有角度的矩形

python - 生成离线工作的 Bokeh html 文件

javascript - Ember createRecord 未创建关系