0

假设,我有一个 Django 表单 - XYZ,其中包含字段 A、B、C。字段 B 是用户名字段,当特定的用户名已经存在时,会发生验证错误并返回一条消息。除此之外,我想向模板发送一些自动建议的用户名字典。据我了解,我只能发送字段错误和非字段错误。

def clean_B(self):
        B = self.cleaned_data['B']
        if address.objects.filter(B=B).exists():
            raise forms.ValidationError("Username already exists")
        return B

我尝试使用 Form.add_error() 添加另一个错误,而 Django 不允许每个字段的单个字典中出现多个错误或 Non_field 错误。

我怎样才能做到这一点?

谢谢!

4

1 回答 1

0

我认为您可以使用django messages framework向用户显示带有建议的消息。

from django.contrib import messages

...

def clean_B(self):
    B = self.cleaned_data['B']
    if address.objects.filter(B=B).exists():
        # In __init__ method of the form, you should store request as property
        messages.info(self.request, 'You should use another username, i.e. John')
        raise forms.ValidationError('Username already exists')
    return B

然后,在模板中的某处,输出消息:

{% if messages %}
<ul class="messages">
    {% for message in messages %}
    <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
    {% endfor %}
</ul>
{% endif %}
于 2016-02-14T01:31:41.713 回答