Si el formato de los números de teléfono no cambia, puede escribir su propia función para formatear el número de teléfono (consulte this). Un mejor enfoque sería utilizar una biblioteca de terceros para hacerlo por usted, como python-phonenumbers
. El método más sencillo es hacer algo como esto:
import phonenumbers
class Business(models.Model):
phone = ...
def formatted_phone(self, country=None):
return phonenumbers.parse(self.phone, country)
en la plantilla
# We can't pass parameters from the template so we have to hope that python-phonenumbers guesses correctly
{{ business.formatted_phone }}
Alternativamente (o simultáneamente) write a custom template filter para formatear el numero de teléfono. Que se vería así:
{{ business.phone|phonenumber }} or {{ business.phone|phonenumber:"GB" }}
y escrito:
import phonenumbers
@register.filter(name='phonenumber')
def phonenumber(value, country=None):
return phonenumbers.parse(value, country)
Si sólo se va a utilizar el formato en la plantilla, escriba un filtro de plantilla. Si cree que necesitará el formato en otros aspectos de su aplicación, por ejemplo, al enumerar los números telefónicos en el administrador, escríbalo en el modelo (pero pierda la capacidad de pasar parámetros a la función)
Creo que el título de esta pregunta es bastante engañosa. "Formatear un número de teléfono" o algo similar podría ser más apropiado –