Как применить расширенные фильтры набора запросов django на основе двух разных столбцов?
Я новичок в django. Я работаю над тестовым проектом. В нем у меня есть модель CollectFee
со структурой, приведенной ниже:
Снимок экрана таблицы базы данных
Я хочу применить набор запросов в представлениях, который будет отображать все записи, где feetype_id
не 2, когда эта запись исключена, то также исключить те записи, которые имеют тот же boarder_id
, что и уже исключенная запись.
Например, исключите вторую строку, так как она имеет feetype_id = 2
, затем исключите третью строку, так как она имеет тот же boarder_id
, что и вторая строка.
Поскольку я новичок, я смог просто реализовать фильтр ниже:
def feedue(request):
fee_type = 2
duefee= CollectFee.objects.exclude(feetype_id=2)
context = {'duefee':duefee}
return render(request, 'fee-due.html', context)
Вы можете исключить отношения "многие-к-одному" с помощью аксессора through следующим образом:
CollectFee.objects.exclude(boarder__collectfee__feetype=last_fee_type)
Это выражение по существу получает Boarder из определенного объекта CollectFee, затем все CollectFees, связанные с этим Boarder и их FeeTypes, позволяя вам исключить соответственно.
Может быть это поможет
def feedue(request):
excluded_objs = CollectFee.objects.filter(feetype_id=2)
border_ids = [ids for obj.border_id in excluded_objs]
duefee = CollectFee.objects.exclude(boarder_id__in=border_ids)
context = {'duefee': duefee}
return render(request, 'fee-due.html', context)