在Djang中编辑表格中给出的信息

2024-10-04 11:34:59 发布

您现在位置:Python中文网/ 问答频道 /正文

大家好,我希望我可以通过恢复原始值来更改窗体中的值,只需更改值和数据库中的更改 我试图用“编辑”按钮编辑一个模型表单,但是表单没有更新。 原始值的实例化没有完成 所以我有一个

models.py

class Champs(models.Model):
    champs = models.CharField(max_length=30)
    contenu = models.CharField(max_length=30)


    def __str__(self):
        if len(self.contenu) > 17:
            return self.champs[:16] + "..."
        else:
            return self.champs

forms.py

class ChampsForm(forms.ModelForm):
    class Meta:
        model = Champs
        fields = ('champs','contenu')

Views.py

    def champs(request):
        logged_user = get_logged_user_from_request(request)
        champs = Champs.objects.all()
        if logged_user:
            if len(request.GET) > 0:
                form = ChampsForm(request.GET)
                if form.is_valid():
                    form.save(commit=True)
                    return HttpResponseRedirect('/champs')
                else:
                    return render_to_response('polls/champs.html', {'champs': champs, 'form': form})
            else:
                form = ChampsForm()
                return render_to_response('polls/champs.html', {'champs': champs, 'form': form})
        else:
                return HttpResponseRedirect('/login')

    def modify_champs(request):

        if logged_user:
            if len(request.GET) > 0:
                form = ChampsForm(request.GET, instance=...)
                if form.is_valid():
                    form.save(commit=True)
                    return HttpResponseRedirect('/champs', {'user_to_show':logged_user})
                else:
                    return render_to_response('polls/modify_champs.html', {'form': form, 'instance':...})
            else:
                form = ChampsForm(instance=...)
                return render_to_response('polls/modify_champs.html', {'form': form, 'instance':...})
        else:
                return HttpResponseRedirect('/login')

The template for champs.py -->

<div class="col-md-8 col-md-push-4">
        <h1>Formulaire</h1>
        <form action="" method="GET" >{% csrf_token %}
                {{ form.as_p }}
                <p>
                    <input type="submit" class="btn btn-success" value="Add" id="showProfileNavigationButtons" />
                </p>

        <table>
        {% for champs in champs %}<hr>
            (Son id :) {{ champs.id }}<br><br>{{ champs.champs }} : {{ champs.contenu }}
            <a href="../modifyChamps">Modifier</a>
        {% endfor %}
        </table>

        </form>
 </div>

And for finish the template for modify_champs -->

<div class="row">
        <div class="col-md-8 col-md-push-4">
        <h1>Formulaire</h1>
        <form action="" method="GET" >{% csrf_token %}
                {{ form.as_p }}
                <p>
                    <input type="submit" class="btn btn-success" value="Save" id="showProfileNavigationButtons" />
                </p>

        </form>
  • 我想在模板中检索表单中列出的信息”champs.html并在“修改”窗体中找到它们_champs.html“而且是 能够改变他们!谢谢你的时间!the template champs.html

Tags: topyformgetreturnifmodelsrequest
1条回答
网友
1楼 · 发布于 2024-10-04 11:34:59

在中设置modify\u champys url网址.py类似于url(r'^modify_champs/(?P<instance>[0-9]+)/$',.....)。你知道吗

然后在中更改视图声明视图.py到def modify_champs(request, instance):。你知道吗

内部视图.py将form = ChampsForm(request.GET, instance=...)更改为form = ChampsForm(request.GET, instance=Champs.objects.get(pk=instance)。你知道吗

然后,当您将URL更改为http://.../modify_champs/1时,表单将选择主键为1的Champs对象。你知道吗

然后您只需要使用HTML或javascript链接到相关的URL。你知道吗

编辑:我假设这是一个POST-request-not-GET,所以这可能是不正确的

相关问题 更多 >