【问题标题】:Delete from django database with many form in same template从 django 数据库中删除同一模板中的多个表单
【发布时间】:2021-07-20 01:45:29
【问题描述】:

我是 django 新手,我正在尝试建立一个待办事项列表 所以我点击“✓”按钮它使用javascript将项目从红色变为绿色 现在我试图让按钮“X”从 django 数据库中删除对象 所以我卡在这里 这是我的代码,我正在等待您的帮助

我的观点

from django.shortcuts import render, redirect
from django.http import HttpResponse
from .models import *
from .forms import *
# Create your views here.


def index(request):
    tasks = Task.objects.all()
    form = TaskForm()

    if request.method == "POST" :
        form = TaskForm(request.POST)
        if form.is_valid():
            form.save()
        return redirect("/")
    context = {
        'tasks' : tasks , 'form' : form
    }
    return render(request,"tasks/list.html", context)


    def deletetask(request, pk):
        if request.method == "POST" and "delete" in request.POST:
            print(request.POST)
            print("good work")
            item = request.POST.get(id=pk)
            Task.objects.delete(id=item)
        return render(request,"tasks/list.html")

我的表单.py

from django import forms
from django.forms import ModelForm

from .models import *


class TaskForm(forms.ModelForm):
    class Meta:
        model = Task
        fields = '__all__'

我的模型.py

from django.db import models

# Create your models here.
class Task(models.Model):
    title = models.CharField(max_length=200)
    complete = models.BooleanField(default=False)
    creted = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

我的模板

    <h3>Hello world from templates</h3>

<form action="/" method="POST"> {% csrf_token %}
    
    {{form.title}}
    <input type="submit" name="Ajout medoc">
</form>


{% for task in tasks %}
    <div >
        <form action="/" method="POST">
        <p style="color: red" id="{{task.id}}">
            <input type="button" name="cmd" value="✓" onclick="document.getElementById( '{{ task.id }}').style.color = 'green'"> 
            
            <input type="button" name="delete" value="X" id="{{task.id}}">
            
        {{ task }}
        </p>
        </form>
        
    </div>

{% endfor %}

【问题讨论】:

    标签: javascript django database


    【解决方案1】:

    我会做的是:

    def deletetask(request, pk):
        instance = Task.objects.delete(id=pk)
        instance.delete()
         
        return redirect('index')
    

    然后在您的模板中:

    {% for task in tasks %}
    <div >
        <p style="color: red" id="{{task.id}}">
            <input type="button" name="cmd" value="✓" onclick="document.getElementById( '{{ task.id }}').style.color = 'green'"> 
            
            <a href="{% url 'delete_item' task.id %}">
                 <button>X</button>
            </a>
            
        {{ task }}
        </p>
        
    </div>
    

    {% endfor %}

    在你的 urls.py 中:

    urlpatterns = [
       path("delete_item/", views.delete_item, name="delete_item"),
    
    ]
    

    模板中的代码是从“a”html 标记调用函数,而不是使用表单。

    【讨论】:

    • 对不起,我的错。更改视图,使其如下所示: def deletetask(request, pk): instance = Task.objects.get(id=pk) instance.delete() return redirect('index')
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-22
    • 2012-07-08
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    相关资源
    最近更新 更多