У меня есть модель Django, у которой есть следующие поля.Динамическое поле в модели Django
Я хотел бы получить совет относительно плюсов и минусов добавления динамических атрибутов к этим моделям (на основе некоторых вычислений, которые зависят от информации в реальном времени от пользовательского сеанса).
Я доволен текущей реализацией, но я как-то обеспокоен последствиями в долгосрочной перспективе. Это плохой дизайн? В этом случае есть альтернативы, которые позволяют сделать это более чисто? Чище ли делать вычисления в тегах шаблонов?
Возможно, эта логика может быть поставлена менеджером? Прокси-модель? Я думал, что это свойство как свойства, но вычисления зависят от объекта запроса, поэтому его нужно как-то сделать в представлении.
Большое спасибо.
class Printer(TimeStampedModel):
user = models.ForeignKey(
User)
minimal_cost = models.IntegerField()
active = models.BooleanField(default=True)
def some_view(request):
for printer in printer_list:
printer.distance = printer.distance_point(user_point)
printer.materials_costs = MaterialsCosts(printer, cart=cart)
printer.minimum_price = printer.materials_costs.minimum_printer_price()
Что ограничивает вас делать эти расчеты на уровне базы данных, используя агрегацию Джанго или что-то подобное? –
Это нетривиальные вычисления. Например, расчет расстояния не поддерживается из коробки Django (только GeoDjango). Вы подразумеваете, что эти динамические поля - плохой стиль? – cyberjoac
Вопросы по оптимизации существующего кода (особенно код, который работает без ошибок) лучше всего подходят для codereview.stackexchange.com –