Django фильтрует два поля в разных записях с одинаковым значением
В Django у меня есть большой объем данных (реальные данные составляют около десятков тысяч). Я хочу найти все записи с одинаковой суммой доходов и расходов. Что я должен сделать? Mysql:
id | income | expenses |
---|---|---|
1 | 0.00 | 50.00 |
2 | 0.00 | 43.00 |
3 | 50.00 | 0.00 |
4 | 50.00 | 0.00 |
5 | 29.00 | 0.00 |
6 | 23.00 | 0.00 |
7 | 0.00 | 23.00 |
8 | 0.00 | 5.00 |
9 | 0.00 | 12.00 |
Я хочу отфильтровать данные 13467. Все суммы расходов и доходов имеют одинаковые данные (за исключением суммы 0.00)
id | income | expenses |
---|---|---|
1 | 0.00 | 50.00 |
3 | 50.00 | 0.00 |
4 | 50.00 | 0.00 |
6 | 23.00 | 0.00 |
7 | 0.00 | 23.00 |
вы можете сделать следующее:
from django.db.models import F
data = Model.objects.filter(income_field=F("expenses_field_name")).exclude(income_field=0)
тот же вопрос с полем Datetime. Ответ
from itertools import chain
list_id = []
for i in Model.objects.filter(income__gt=0):
ids = Model.objects.filter(expenses=i.income).values_list("id",flat=True)
list_id.append(ids)
#flatten the list of lists
list_id = list(set(chain.from_iterable(list_id)))
Я хочу реализовать эту функцию, но объем моих данных слишком велик, и я не хочу использовать цикл for для ее реализации. Я хочу знать, есть ли более простой способ.