ModelForm form_valid()函数的成功/重定向URL问题

时间:2018-09-28 05:31:05

标签: python django django-models django-forms

我在覆盖form_valid()的{​​{1}}方法时遇到了一些困难。

我有一个CreateView,用户可以在此注册新患者。表单由ModelForm处理。我已经覆盖了视图的CreateView方法,因为我首先需要将用户分配给患者,然后评估患者的详细信息(即表格中的数据)是否满足某些条件。如果不符合标准,则不会保存患者/表格,并且用户会收到错误消息。如果他们符合条件,则将保存患者/表格,并且用户会收到一条成功消息。 表单/视图的此功能正常工作-在下面的测试代码中,我有一个布尔值“ is_eligible”,稍后将替换为适当的条件。当form_valid()保存模型时,我会收到一条成功消息;当is_eligible == True保存该模型时,我会收到一条== False消息。

我的问题是处理成功网址,如果患者不符合条件,则重定向。我希望它返回到我已设置的“仪表盘”,但是每次我得到一个

error

如果任何人都可以提供有关如何进行这项工作的见解/建议,将不胜感激。

我当前的代码:

forms.py

DisallowedRedirect at /dashboard/patients/register
Unsafe redirect URL with protocol 'accounts'

views.py

class PatientRegisterForm(forms.ModelForm):
    class Meta:
        model = Patient
        fields = ['first_name', 'last_name', 'is_eligible']

1 个答案:

答案 0 :(得分:0)

首先,我认为您不需要将self.request作为重定向的第一个参数传递。
docs重定向应该是这样

redirect(to, permanent=False, *args, **kwargs)

但是导致您出错的真正问题是您没有反转URL。您需要做的是:

from django.shorcts import reverse_lazy
..
success_url = reverse_lazy('accounts:dashboard')
..
return redirect(reverse('accounts:dashboard'))