In Django, I have a large amount of data(real data is about tens of thousands). I want to find all records with the same amount of income and expenditure. What should I do? 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 |
I want to filter out data 13467. All expenses and income amounts have the same data (excluding the amount is 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 |
CodePudding user response:
you can do this:
from django.db.models import F
data = Model.objects.filter(income_field=F("expenses_field_name")).exclude(income_field=0)
same question with Datetime Field. Answer
CodePudding user response:
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)))
I want to implement this function, but my data volume is too large, and I don't want to use the for loop to implement it. I want to know if there is a simpler way.