大家好,我希望我可以通过恢复原始值来更改窗体中的值,只需更改值和数据库中的更改 我试图用“编辑”按钮编辑一个模型表单,但是表单没有更新。 原始值的实例化没有完成 所以我有一个
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>
在中设置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,所以这可能是不正确的
相关问题 更多 >
编程相关推荐