КОГДА использовать аннонат и агрегировать в Django? - PullRequest
1 голос
/ 03 марта 2020

В чем преимущества и недостатки использования агрегатного и аннонатного метода? Я уже прочитал документацию о том, как использовать метод агрегирования и анноната, но я все еще не знаю разницу между ними, Мне нужно знать, когда использовать анонат и агрегат , скажите, пожалуйста,

Я знаю, что я не единственный, кто запутался, когда использовал метод аннонации и агрегирования. особенно когда вы новичок в django, спасибо

1 Ответ

1 голос
/ 03 марта 2020

Вы можете добавить дополнительные поля, которые содержат некоторые процессы, в ваш набор запросов для каждого элемента с помощью annotate. С помощью агрегата вы можете получить результат для всех элементов набора запросов. Например, у вас есть такая модель:

 class MyModel(models.Model):
     field_first = models.IntegerField() 
     field_second = models.IntegerField() 

Пример аннотирования: Если вы хотите добавить поле суммы для каждой записи, вы можете использовать аннотацию:

items = MyModel.objects.annotate(summary=F('field_first') + F('field_second'))
for item in items:
    print(item.summary) # you have a summary field for items after this

Пример для агрегата: Если вы хотите получить сумму field_first для всех записей, вы можете использовать агрегат

total =  MyModel.objects.aggregate(sum_first=Sum('field_first')) # it returns as a dict
print(total) # {'sum_first': total value} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...