Size: a a a

Django [ru] #STAY HOME

2020 March 11

M

Melis in Django [ru] #STAY HOME
другого решение сходу не придумал)
источник

И

Игорь in Django [ru] #STAY HOME
спасибо за мысль)
источник

АМ

Алишер Маткурбанов in Django [ru] #STAY HOME
Всем привет.
Вопрос по архитектуре django приложения, немного пространный.
Допустим у меня есть класс который не связан с базой данных (т.е. не модель), но который хорошо бы использовать в приложении чтобы смоделировать какую-то часть доменной логики. Куда такие классы помещают вообще в django (кажется они называется объектами доменной модели, но не уверен)? Есть какой-то общепринятый метод?
источник

M

Melis in Django [ru] #STAY HOME
Игорь
спасибо за мысль)
источник

И

Игорь in Django [ru] #STAY HOME
тоже интересно, спасибо!
источник

МП

Михаил Павлов in Django [ru] #STAY HOME
Алишер Маткурбанов
Всем привет.
Вопрос по архитектуре django приложения, немного пространный.
Допустим у меня есть класс который не связан с базой данных (т.е. не модель), но который хорошо бы использовать в приложении чтобы смоделировать какую-то часть доменной логики. Куда такие классы помещают вообще в django (кажется они называется объектами доменной модели, но не уверен)? Есть какой-то общепринятый метод?
> смоделировать какую-то часть доменной логики
Поясни пожалуйста, это как?
источник

АМ

Алишер Маткурбанов in Django [ru] #STAY HOME
Михаил Павлов
> смоделировать какую-то часть доменной логики
Поясни пожалуйста, это как?
В приложении есть класс Currency (модель, потому что нужно хранить курс, код валюты в базе данных). Также есть класс Money - нужен для удобства, чтобы связать количество денег и валюту, сделать функцию конверсии в другую валюту (т.е. просто моделирует предметную область).
С точки зрения архитектуры как я понимаю Currency - это data model, а Money - это domain model. Возможно ошибаюсь
источник

МП

Михаил Павлов in Django [ru] #STAY HOME
Что-то сложно
источник

МП

Михаил Павлов in Django [ru] #STAY HOME
А практическая задача какая?
источник

PA

Petro Alexeenko in Django [ru] #STAY HOME
Хлопцi, как в админке джанго вместо CharField поля отображать текстарию для удобства?
источник

МП

Михаил Павлов in Django [ru] #STAY HOME
Petro Alexeenko
Хлопцi, как в админке джанго вместо CharField поля отображать текстарию для удобства?
ключевое слово widget
источник

АМ

Алишер Маткурбанов in Django [ru] #STAY HOME
ну вот я хочу 5 евро перевести в доллары.
без Money я делаю
euro = Currency.objects.get(code="EUR")
usd = Currency.objects.get(code=USD")
4_euro_in_usd: Decimal = euro.convert(4, usd) # тут происходит перевод курса из валюты а в валюту б
А как хотелось бы
euro = Currency.objects.get(code="EUR")
usd = Currency.objects.get(code=USD")
my_euros = Money(amount=4, currency=euro)
my_dollars: Money = my_euros.convert(usd)
источник

DT

Dan Tyan in Django [ru] #STAY HOME
Petro Alexeenko
Хлопцi, как в админке джанго вместо CharField поля отображать текстарию для удобства?
думаю нужно определять свою форму и в ней указывать виджет для поля
источник

АМ

Алишер Маткурбанов in Django [ru] #STAY HOME
Хранить Money в бд не нужно, т.е. это по сути не модель (т.к. модель связывает приложение и бд).
Как с такими объектами принято работать вообще с django?
источник

МП

Михаил Павлов in Django [ru] #STAY HOME
Есть подход fat models, когда такие методы добавляешь в модельки
источник

МП

Михаил Павлов in Django [ru] #STAY HOME
К примеру euro.to(currency)
источник

МП

Михаил Павлов in Django [ru] #STAY HOME
usd.to(currency)
источник

МП

Михаил Павлов in Django [ru] #STAY HOME
То есть

class Currency(Model):
   ...
   def to(currency):
       return converted_amount
источник

АМ

Алишер Маткурбанов in Django [ru] #STAY HOME
Михаил Павлов
То есть

class Currency(Model):
   ...
   def to(currency):
       return converted_amount
Сейчас у меня так и так мне не совсем нравится, потому что если мне нужно 4 евро перевести в доллары, то нужно эту 4 наружу выносить наружу
4 * euro.to(usd)
а в случае с классом Money это все внутрь класса засовывается и становится понятно что это "количество валюты".
источник

МП

Михаил Павлов in Django [ru] #STAY HOME
Затрудняюсь ответить без понимания структуры данных
источник