我是django开发者,我们一直在研究1.3。现在想试试最新版本,即1.8.1。由于1.3到1.8.1有很多变化。想知道Django中是否存在任何类型的PhoneField
,它应该在一个字段中存储多个电话号码。
我正在考虑为此目的使用JSON字段,如
使用JSON字段我可能很容易实现,但验证需要单独的功能。
contact_info = json.JSONField("ContactInfo", default=contact_default)
我找到了this,但认为与Textfield没什么不同。
答案 0 :(得分:1)
您可以创建一个在保存到JSONField或HStoreField之前验证数字的函数。
示例:
import re
def validate_phone_number(phone_number):
valid_number_pattern = re.compile(r'^(\d{3})-(\d{3})-(\d{4})$')
is_valid = re.match(valid_number_pattern, phone_number)
if not is_valid:
return False
else:
return True
def save_number(request):
if request.METHOD == 'POST':
phone_number = request.POST['number']
is_valid = validate_phone_number(phone_number)
if not is_valid:
messages.error(request, 'Error, your phone number is not valid!')
return redirect('main:add_number')
else:
[... Add the number(s) to the model's JSONField here ...]
messages.success(request, 'Success!')
return redirect('main:index')
或者,您可以在此处使用所选正确答案中更复杂的正则表达式: https://stackoverflow.com/a/3868861/3345051
答案 1 :(得分:1)
If you are using PostgreSQL you can use ArrayField.
UITableView
Official documentation here. ArrayField