Различный формат валюты с использованием DecimalField на основе выбора из других моделей

Что я пытаюсь сделать

Я бы хотел, чтобы Django сохранял различные форматы валюты в зависимости от того, какой язык предпочитает пользователь без использования локализации . Но я совершенно не понимаю, с чего начать.

У меня есть два вида валют: Доллар США ($) и тайский бат. Доллар США может иметь максимум 2 знака после запятой, в то время как тайский бат не имеет 2 знаков после запятой. Здесь, когда пользователь выбирает предпочитаемый язык как USD, я бы хотел, чтобы Django сохранил цену за ночь в гостиничном номере (это определено в других моделях) до 2 знаков после запятой, хотя его значение не имеет десятичных цифр. С другой стороны, тайский бат всегда должен иметь 0 знаков после запятой.

Пример

  1. Предпочитаемая валюта USD и цена за ночь $600 -> Хотите сэкономить как $600.00
  2. Предпочитаемая валюта USD и цена за ночь $600.12 -> Хотите сэкономить как $600.12
  3. Предпочитаемая валюта THB и цена за ночь ฿600 -> Хотите сохранить как ฿600 (без десятичных точек)
  4. Предпочитаемая валюта - 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")
    )

Есть ли какие-либо рекомендации, на которые я могу ссылаться?

Вернуться на верх