In my case customer filed are array filed
customer = ArrayField(models.TextField(),default=[])
my model look like
| id | customer |
|---|---|
| 1 | {1,2,3} |
| 2 | {4,2,5} |
| 3 | {1,8,9} |
i want to filter my model by {5,8}
output will be 2th ,3th row
You can use overlap like this:
customer_ids = MyModel.objects.filter(
customer__overlap=[5, 8]
).values_list('id', flat=True)
# do something with customer_ids
But using id to determine row number is not right because if you delete an item having an id as 3 and then after that insert a new item then that new item will be given an id of 4. So row number of last row will give you 4th row which is wrong.
You can get row number like this:
row_numbers = [index for index, customer_id in enumerate(customer_ids)]
Object.objects.filter(customer__contained_by=[5, 8])