【问题标题】:Insert Phone number into Model Django将电话号码插入模型 Django
【发布时间】:2013-12-09 22:47:26
【问题描述】:

我是 Python/Django 的新手,我正在尝试将电话号码插入模型中的字段。

我的 models.py 中的代码是

from django.db import models
from django.core.validators import * 

telephone = RegexValidator(r'^\d+$', 'Only numeric characters are allowed.')

class Registration(models.Model):
      mobile_telephone = models.PositiveIntegerField(max_length=18, validators=[telephone, MaxLengthValidator])

forms.py 的代码

from django.forms import ModelForm
from django import forms
from registration.models import Registration

class RegistrationForm(ModelForm):
    mobile_telephone = forms.CharField(max_length=18,
                      error_messages={'invalid':'Enter a valid mobile number',
                                      'required':'Enter a valid mobile number'}
                  )

我已经尝试了带有 IntegerField、CharField 和 PositiveIntegerField 的 models.py,但它们都不允许在字段的开头使用 0。

我做错了什么?

谢谢

【问题讨论】:

  • McAbra - 错误是它不接受以 0 开头的数字。即 - 我在表单字段中输入 0123456789,它被保存到数据库中,因为 123456789 缺少 0。作为电话号码0 很重要。

标签: python django


【解决方案1】:

在您的模型中使用CharField。您的正则表达式将确保只允许使用数字字符。

【讨论】:

  • 我已将其设置为 CharField 但它仍然不允许 0 和字段的开头一旦存储在模型中。我的正则表达式错了吗?
  • 您需要更改数据库中的列以及更新模型。如果您还没有任何重要数据,最简单的方法是删除表并重新运行syncdb。
  • Alasdair - 我已经删除了我的数据库并重新同步了它。现在它可以工作了,我之前没有考虑过放弃它并重新同步它我正在更新我的模型并运行syncdb,但显然这并没有正确地重建整个事情。感谢您的帮助!
  • syncdb 命令创建表但不修改现有表。 Django 1.7 将进行模式迁移,对于 Django 1.6 及更早版本,您可以使用south
猜你喜欢
  • 2020-04-16
  • 1970-01-01
  • 2014-07-27
  • 2014-08-15
  • 2016-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-19
相关资源
最近更新 更多