Как применить расширенные фильтры набора запросов 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)
Вернуться на верх