【发布时间】:2018-08-27 07:47:32
【问题描述】:
我的 RegexValidator 似乎正在工作,因为如果以错误的格式输入 phone_number,则不会保存表单,但不会显示错误消息。如果格式符合正则表达式,则保存表单。我检查了Django regex validator message has no effect 的帖子并包含了代码属性,但它没有改变任何东西。好像少了点什么,但我不知道是什么。我的 models.py 和 forms.py 如下:
#models.py
from django.db import models
from django.core.validators import RegexValidator
class Notification(models.Model):
sender = models.EmailField(max_length = 100)
status = models.CharField(max_length = 50)
timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)
message_info = models.TextField(max_length = 1000)
def __str__(self):
return self.message_info[:100]
class ScheduleNotification(Notification):
company = models.CharField(max_length = 50)
phone_regex = RegexValidator(
regex=r'^\+?1?\d{9,15}$',
message="Phone number must be entered in the format: '+79999999999'. Up to 15 digits allowed.",
code="invalid")
phone_number = models.CharField(validators=[phone_regex], max_length=17, blank=False)
def __str__(self):
return self.sender
#forms.py
from django import forms
from .models import Notification, ScheduleNotification
...
class ScheduleNotificationForm(forms.ModelForm):
class Meta:
fields = ['sender', 'company', 'phone_number', 'message_info']
labels = {
"sender": "your email:",
"company": "your company:",
"phone_number": "your mobile:",
"message_info": "type your message:"
}
【问题讨论】:
-
您在哪里使用您的表单?在管理员里面?如果您在自定义页面上使用它,也许您忘记为您的 phone_number 字段打印错误消息?我刚刚检查了一个几乎相同的用例的代码,我无法发现您的代码中的缺陷,但请发布您是如何使用该表单的。
-
我和安迪一样——我觉得一切都很好。尝试在
-
安迪,谢谢你的建议。问题是在我的模板中我确实没有打印错误,我检查了这篇文章stackoverflow.com/questions/14647723/… 并了解它应该如何工作。但由于在我的情况下,表单提交是通过 Ajax 并且来自视图的响应是通过 JsonResponse,所以我什么也没得到。我将错误文本添加到 JsonResponse 中。现在可以了。再次感谢!
标签: django python-3.6