我有一个模板,在我的Django网站的某个网址上显示某个ModelForm
。 ModelForm
基于具有两个字段的模型
class ActionCode(models.Model):
action_code = models.CharField(blank=False, max_length=10,
verbose_name="Action Code")
description = models.TextField(blank=True)
class Meta:
unique_together = ('action_code',)
我希望我的ModelForm
仅向用户提供第一个字段(操作代码),然后在提交时,验证输入的值是否已存在。如果它尚不存在,我想重定向用户,以便能够输入该操作代码的描述(我的模型中的第二个字段)。所以我写了第二个ModelForm
,它使用了模型的Description字段,我希望在验证数据是新的之后,我的第一个表单重定向到第二个表单。理想情况下,描述将链接到这个特定的数据,并且两者都将进入相同的Django数据库表(因此它们来自相同的模型)。但是,当我输入新的数据并点击提交时,该网站只停留在/ action_code / URL并显示“提交”按钮,而不显示任何其他内容。如何将第一个表单重定向到第二个表单,如果数据是新的,确保它只是这样做的最佳方法是什么?
以下是我的urls.py
:
url(r'^action_code/', action_code_form, name="actioncode"),
url(r'descr_form/', code_description_form, name='description'),
以下是`forms.py'中的两个表单:
class ActionCodeForm(ModelForm):
class Meta:
model = ActionCode
fields = ('action_code',)
class ActionCodeDescriptionForm(ModelForm):
class Meta:
model = ActionCode
fields = ('description',)
这是我的views.py
:
def action_code_form(request):
form = ActionCodeForm()
description_form = ActionCodeDescriptionForm
if request.method == 'POST':
form = ActionCodeForm(request.POST)
if form.is_valid():
action_code = form.cleaned_data['action_code']
form.save()
return render(request, 'description_form.html',
{'form': description_form})
return render(request, 'action_code_form.html', {'form': form})
def code_description_form(request):
form = ActionCodeDescriptionForm()
if request.method == 'POST':
form = ActionCodeDescriptionForm(request.POST)
if form.is_valid():
form.save()
return render(request, 'description_form.html', {'descr_form': form})
我的模板:
action_code_form.html:
<form method="post" action="">
{% csrf_token %}
<table>
{{ form }}
</table>
<input type="submit" value="Submit"/>
</form>
description_form.html:
<form method="post" action="">
{% csrf_token %}
<table>
{{ descr_form }}
</table>
<input type="submit" value="Submit"/>
</form>
答案 0 :(得分:1)
表单不会重定向到任何内容。视图负责进行重定向。
您需要两个视图,其中包含两个网址;当第一个表单提交成功时,视图应重定向到第二个URL。