english custom python django django-models django-forms django-contrib

python - custom - import login django



Al almacenar números de teléfono en Django, ¿debo guardarlos como dígitos brutos o usar django.contrib.localflavor? (3)

El título puede haber sido confuso, pero déjame explicar:

Actualmente cuando estoy almacenando un número de teléfono con dígitos sin procesar como 5554441234 . Luego en mi plantilla iba a "formatear" el número en algo como 555-444-1234 .

Me di cuenta en el localflavor de Django, hay un campo de número de teléfono de EE. UU. Que comprueba si una cadena está en formato XXX-XXX-XXXX .

Entonces, ¿mi pregunta es si debo ingresar el número de teléfono como dígitos brutos y luego formatearlo en la plantilla o debo ingresar el número de teléfono de la forma formateada utilizando el sabor local ?

Si elijo el último, ¿se aplicaría la restricción de formato XXX-XXX-XXXX incluso al nivel de database API la database API o en la página de administración de Django?


Guárdelos tal como se ingresaron, solo quite el espacio en blanco circundante si es necesario. La forma en que un usuario formatea su número almacena información semántica que no desea perder normalizándola. En los Estados Unidos, el formato XXX-XXX-XXXX es muy común, pero otros entornos locales usan formatos totalmente diferentes. Por ejemplo, donde vivo algunos formatos comunes son: XX-XXX XXX XX , XXX/XXX XX XX , +46(0)70-XXX XX XX y así sucesivamente ad nausem.

El número que se muestra al usuario debe estar en el mismo formato que el que se ingresó; de lo contrario, él o ella pensarán que está munged o puede que ni siquiera reconozca el número si está formateado en un estilo diferente al que el usuario está acostumbrado. Vea también esta discusión: http://discuss.fogcreek.com/dotnetquestions/default.asp?cmd=show&ixPost=6079&ixReplies=6


Si usa el framework de formularios (por ejemplo, en el administrador de Django), la validación de la entrada se realizará en el nivel de la aplicación. Por lo tanto, para ingresar el número de teléfono en el formulario, debe formatearlo en XXX-XXX-XXXX .

En el nivel de la base de datos, es solo un CharField , por lo que la base de datos no verifica el formato.