How to set region-code or format-type for PhoneNumber?
The documentation has no example to override the default-set region code or format.
I have also gone through stack overflow. The suggestions found there were not optimal.
One of the suggestions is as follows:
from pydantic import BaseModel
from pydantic_extra_types.phone_numbers import PhoneNumber
PhoneNumber.phone_format = 'E164' #'INTERNATIONAL', 'NATIONAL'
class User(BaseModel):
name: str
phone_number: PhoneNumber
But this will restrict the whole app to use a single format and region code. If I need another format in another place, this will be overridden.
What is the correct way of setting region code and format for a model?
Yeah. I think we need to refactor the logic we have in place.
I think a Field like behavior would be useful:
class User(BaseModel):
name: str
phone_number: PhoneNumber(phone_format="E164", ...)
The documentation has no example to override the default-set region code or format.
I have also gone through stack overflow. The suggestions found there were not optimal.
One of the suggestions is as follows:
from pydantic import BaseModel from pydantic_extra_types.phone_numbers import PhoneNumber PhoneNumber.phone_format = 'E164' #'INTERNATIONAL', 'NATIONAL' class User(BaseModel): name: str phone_number: PhoneNumberBut this will restrict the whole app to use a single format and region code. If I need another format in another place, this will be overridden.
What is the correct way of setting region code and format for a model?
i was looking for an answer to this, and found a badly formatted example on this page. below is my personal spin on it, and it seems to work for me
from typing import Annotated, Union
from pydantic_extra_types.phone_numbers import PhoneNumber, PhoneNumberValidator
PhoneNumberType = Annotated[
Union[str, PhoneNumber],
PhoneNumberValidator(default_region="NG", number_format="E164"),
]