Различный формат валюты с использованием DecimalField на основе выбора из других моделей
Что я пытаюсь сделать
Я бы хотел, чтобы Django сохранял различные форматы валюты в зависимости от того, какой язык предпочитает пользователь без использования локализации . Но я совершенно не понимаю, с чего начать.
У меня есть два вида валют: Доллар США ($) и тайский бат. Доллар США может иметь максимум 2 знака после запятой, в то время как тайский бат не имеет 2 знаков после запятой. Здесь, когда пользователь выбирает предпочитаемый язык как USD, я бы хотел, чтобы Django сохранил цену за ночь в гостиничном номере (это определено в других моделях) до 2 знаков после запятой, хотя его значение не имеет десятичных цифр. С другой стороны, тайский бат всегда должен иметь 0 знаков после запятой.
Пример
- Предпочитаемая валюта USD и цена за ночь $600 -> Хотите сэкономить как $600.00
- Предпочитаемая валюта USD и цена за ночь $600.12 -> Хотите сэкономить как $600.12
- Предпочитаемая валюта THB и цена за ночь ฿600 -> Хотите сохранить как ฿600 (без десятичных точек)
- Предпочитаемая валюта - THB и цена за ночь - ฿600.12 -> Это приведет к ошибке валидации, так как в THB нет 2 знаков после запятой.
Ниже показано, как выглядит моя User
модель:
class User(AbstractBaseUser, TimeStampModel):
"""Custom User Definition Model"""
class CurrencyChoices(models.TextChoices):
USD = "USD", _("US Dollar")
THB = "THB", _("Thai Baht")
currency = models.CharField(
max_length=10,
verbose_name=(_("Currency")),
choices=CurrencyChoices.choices,
default=CurrencyChoices.USD,
)
и ниже Room
модель для размещения:
class Room(TimeStampModel):
"""Rooms Model Definition"""
price_per_night = models.DecimalField(
max_digits=10, decimal_places=2, verbose_name=_("Price Per Night")
)
Есть ли какие-либо рекомендации, на которые я могу ссылаться?