Django: когда помещать код в serializers.py или views.py - PullRequest
0 голосов
/ 04 августа 2020

Я немного не понимаю, когда мне следует помещать код в serializers.py или views.py.

Я понимаю, что serializers.py - это то место, где данные обрабатываются + конвертируются между лицевой и внутренней частью.

Но пока я понимаю, что только функция проверки и, возможно, класс Meta должны быть в serializers.py. Я чувствую, что могу просто управлять базой данных прямо в views.py. Например, я могу просто импортировать модель в views.py, а затем выполнить datModel.objects.create () или datModel.objects.get (). SomeAttribute = somethingNew.

1 Ответ

1 голос
/ 04 августа 2020

Поскольку вы упомянули модели и представления, я считаю, что чем меньше лог 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)
...