Найти - Пользователи
Полная версия: Поле или метод?
Начало » Django » Поле или метод?
1
vaxXxa
Скажем, есть в модели 3 поля, которые отвечают за цены на 3 детали. А общая цена - это сумма всех трех цен.
Как лучше организовать модель?
Создать еще одно поле и ловить сигнал, по типу:
def order_pre_save(instance, **kwags):
instance.price = instance.price1 + instance.price2 + instance.price3
models.signals.pre_save.connect(order_pre_save, sender=Order)
или лучше создать метод, по типу:
def total_price(self):
return self.price1 + self.price2 + self.price3
Мне кажется, что делать метод - это красивее, но его можно отображать в админке только в list_display, а в fieldsets - нельзя.
Но, метода будет высчитывать каждый раз при обращении, а сигнал - только когда сохраняется модель…

Что лучше и как поступаете в этом случае Вы? Спасибо.
Evg
все зависит от того где это нужно, если у парочки объектов вывести просто сумму то пойдет и метод.
Чтобы держать это в базе нужен какой то аргумент типа нужна выборка с сортировкой по этому полю, или что либо подобное где оно облегчит вычисление.
Ferroman
Когда-то делал очки рейтинга для объектов. Сначала делал методом, но потом переделывал сигналом - методом было довольно неудобно пользоваться, да и сортировка с выборкой максимального/минимального значения оказалась чаще, чем я думал.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB