【发布时间】:2019-05-27 00:26:44
【问题描述】:
我有一个有两个按钮/输入的表单。
Button1 保存页面并刷新它。
Button2 保存页面并转到另一个 url。
Button1 正在使用 type="submit",然后 view.py 获取数据,保存并刷新数据。
我的问题在于 Button2。我用 formaction="{% url 'team_area:home' %}" 添加了它,实际上重定向了我,但问题是它不保存数据。 Button1 仍然可以正常工作。
是否可以在 view.py 中使用某种 request.the_id_of_pressed_button?
如果有帮助的话,这里涉及到我的文件:
修改播放器.html
<h1>AREA SQUADRA</h1>
<form method="post" action="">
{% csrf_token %}
<h2>Giocatori</h2>
{{ player_formset.management_form }}
{% for player_form in player_formset %}
{% if forloop.last %}
{% if not forloop.first %}
<input type="submit" value="Salva" formaction="{% url 'team_area:home' %}">
{% endif %}
<h5>Nuovo giocatore:</h5>
{% endif %}
{% for field in player_form %}
{% if forloop.revcounter == 2 %}
{{ field }}
{% elif forloop.parentloop.last and forloop.last%}
{% else %}
{{ field.label_tag }} {{ field }}
{% endif %}
{% endfor %}
<br>
{% endfor %}
<input type="submit" value="Aggiungi">
</form>
views.py
@login_required(login_url="/accounts/login/")
def modify_players(request):
if request.user.team is not None:
PlayerFormSet = modelformset_factory(Player, form=PlayerForm, extra=1, can_delete=True,)
if request.method == "POST":
player_formset = PlayerFormSet(request.POST, request.FILES, queryset=Player.objects.all().filter(team=request.user.team),)
for player_form in player_formset:
if player_form.is_valid():
player = player_form.save(commit=False)
player.team = request.user.team
if player_formset.is_valid():
player_formset.save()
return redirect('team_area:modify_players')
else:
player_formset = PlayerFormSet(queryset=Player.objects.all().filter(team=request.user.team))
return render(request, 'team_area/modify_players.html', {'player_formset': player_formset})
else:
return redirect('team_area:home')
【问题讨论】:
-
你想做什么?为什么需要两个提交按钮?我问是因为可能有比添加两个按钮更好的解决方案。
-
@xyres 我需要当我按下它们时都保存数据,但第一个带我到一个页面,第二个带我到另一个页面
-
事实类似于admin Django app 如何修改模型。有“保存”和“保存并继续编辑”按钮
标签: python html django forms django-forms