Поскольку вы упомянули модели и представления, я считаю, что чем меньше лог c о манипулировании моделью в представлении, тем лучше, оставьте представление, чтобы сосредоточиться на извлечении данных, минимальном коде манипулирования данными через инкапсуляцию, затем представьте данные для представления
вот чрезмерно упрощенный пример
class Product(models.Model):
...
stock_level = model.Integer(..)
def reduce_stock_level(number)
# insert some 100 lines of validation
self.stock_level -= number
self.save()
На ваш взгляд:
def checkout(...):
...
product = Product.object.get(...)
product.reduce_stock_level(1)
чище, чем в представлении, чтобы сделать то же самое
def checkout(...):
product = Product.object.get(...)
# insert 100 lines of validation
product.stock_level -= 1
product.save()
Также вы можете повторно использовать метод в других местах и кажется более pythoni c:
for product in Products.objects.all():
product.reduce_stock_level(10)