用于ModelFormset的Django删除按钮操作

莫伊塔巴·尤塞菲(Mojtaba Yousefi)

我有一个modelformset,如下所示:

views.py

def manage_authors(request):
    AuthorFormSet = modelformset_factory(Author, fields=('name', 'title', 'birth_date'))
    if request.method == 'POST':
        if "del_btn" in request.POST:
            query = Author.objects.get(...).delete()
            formset = AuthorFormSet(request.POST, request.FILES)
            if formset.is_valid():
                formset.save()
                formset = AuthorFormSet(queryset=Author.objects.all())
                print "yes"
        else:
            formset = AuthorFormSet(request.POST, request.FILES)
            if formset.is_valid():
                formset.save()
                formset = AuthorFormSet(queryset=Author.objects.all())
    else:
        formset = AuthorFormSet(queryset=Author.objects.all())
    return render(request, "manage_authors.html", {"formset": AuthorFormSet, })

manage_authors.html

<form method="post" action="/manage_authors.html">{% csrf_token %}
{{ formset.management_form }}
{% for form in formset %}
    {{ form.id }}
    <ul>
        {{ form.name }} {{ form.title }} {{ form.birth_date }}
        <input type="submit" name="del_btn" value="Delete"/>
    </ul>
{% endfor %}
<input type='submit' name="edit_btn" value='Edit / Add'/>

在此处输入图片说明

我可以定义什么查询,以便“删除”按钮可以工作?

现在,我遇到了必须删除哪一行的问题。

提前致谢

尤甘达·乔杜里(Yugandhar Chaudhari)

首先,我建议在admin.py中注册用户模型:

admin.site.register(Author)

Django将处理其余的工作。

但是,如果要使用此代码来执行此操作,请执行以下操作:

<form method="post" action="/manage_authors.html">{% csrf_token %}
{{ formset.management_form }}
 for form in formset %}
    {{ form.id }}
    <ul>
        {{ form.name }} {{ form.title }} {{ form.birth_date }}
    <input type="submit" name="del_btn{{ form.instance.id }}" value="Delete"/>
</ul>
{% endfor %}
<input type='submit' name="edit_btn" value='Edit / Add'/>

这样,对象的主键将与删除按钮的名称有关。

现在,在views.py中:

import re, urllib

def manage_authors(request):
    AuthorFormSet = modelformset_factory(Author, fields=('name', 'title', 'birth_date'))
    if request.method == 'POST':
        enurl=urllib.urlencode(request.POST)  # To convert POST into a string
        matchobj=re.search(r'del_btn\d', enurl)  # To match for e.g. del_btn1
        btnname=matchobj.group()  # Contains matched button name
        pri_key=btname[-1]  # slice the number of btn to identify primarykey 
        if matchobj:
            query = Author.objects.get(pk=pri_key).delete()
            formset = AuthorFormSet(request.POST, request.FILES)
            if formset.is_valid():
                formset.save()
                formset = AuthorFormSet(queryset=Author.objects.all())
                print "yes"
        else:
            formset = AuthorFormSet(request.POST, request.FILES)
            if formset.is_valid():
                formset.save()
                formset = AuthorFormSet(queryset=Author.objects.all())
    else:
        formset = AuthorFormSet(queryset=Author.objects.all())

    return render(request, "manage_authors.html", {"formset": AuthorFormSet, })

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用于ModelFormset的Django删除按钮操作

来自分类Dev

html中的按钮,用于删除Django模型的实例

来自分类Dev

Django-更改modelformset_factory删除标签

来自分类Dev

jQuery步骤删除操作按钮

来自分类Dev

用于删除用户帐户的按钮

来自分类Dev

如何保存Django ModelFormSet?

来自分类Dev

从操作栏中删除操作按钮

来自分类Dev

Django Admin - 如何在单个按钮中转换删除操作下拉列表

来自分类Dev

Android-从通知中删除操作按钮

来自分类Dev

从操作栏中删除向上按钮

来自分类Dev

单击操作按钮时删除文本

来自分类Dev

带有操作按钮的闪亮删除标签

来自分类Dev

用于创建,删除,更新操作的Rails路线

来自分类Dev

用于删除表格条目的按钮

来自分类Dev

在执行该按钮的操作期间删除该按钮

来自分类Dev

django:使html按钮操作取决于状态

来自分类Dev

Django Admin中删除操作的奇怪错误

来自分类Dev

浮动操作按钮不适用于ListView

来自分类Dev

仅将jQuery操作应用于单击的按钮

来自分类Dev

如何设置Django ModelFormset小部件?

来自分类Dev

Django通用CreateView和UpdateView中的Modelformset

来自分类Dev

在Django中使用ModelFormSet测试发布请求

来自分类Dev

django ModelFormset单元测试的清洁方法

来自分类Dev

如何通过Django中的按钮删除记录

来自分类Dev

如何在 Django 中制作删除按钮

来自分类Dev

用于删除关键模型的Django DB设计?

来自分类Dev

Android:如何删除操作栏中的“后退/主页”按钮

来自分类Dev

如何在操作栏中删除“共享”按钮的边框?

来自分类Dev

Android导航-弹出堆栈时删除操作栏后退按钮