Как получить все отношения для элементов в модели базы данных в Django

Я пытаюсь сделать онлайн бизнес холст. В этом приложении у нас есть база данных, содержащая Project, User и 9 других моделей. Все модели связаны с одним конкретным проектом. В приложении, когда пользователь нажимает на один из элементов (который ранее хранился в базе данных), я хочу вернуть все связанные с ним элементы. Например, когда пользователь нажимает на структуру затрат, я должен вывести все, что связано с этой структурой затрат, или если пользователь нажимает на одно ценностное предложение, я должен вывести все, что связано с этим ценностным предложением. Ниже приведена модель базы данных:

Я отправляю запрос с помощью AJAX на свой REST api и вот что у меня получилось:
в AJAX, секция - это часть, из которой приходит запрос, например, если пользователь нажал на value-proposition, то это value-proposition. itemID - это ID элемента, на который пользователь нажал. projectname используется для получения проекта из DB. Мне нужно обработать эту часть таким образом, чтобы было неважно, на что нажал пользователь, я мог получить все отношения этого элемента.

def ViewInCanvas(request):
    user = request.user
    webdata = json.loads(request.body)
    projectname = webdata['projectname']
    section = webdata['section']
    itemID = webdata['itemID']

    try:
        project = Project.objects.get(name=projectname, user=user)
    except ObjectDoesNotExist:
        return JsonResponse({"message": "Project Doesn't Exist"}, status=500)

    try:
        item= handler_functions[section](project=project,pk=itemID)
    except ObjectDoesNotExist:
        return JsonResponse({"message": "Project Doesn't Exist"}, status=500)

handler_functions = {
    "value-proposition": ValueProposition.objects.get,
    "customer-segment": CustomerSegment.objects.get,
    "channel": Channel.objects.get,
    "customer-relationship": CustomerRelationship.objects.get,
    "revenue-stream": RevenueStreams.objects.get,
    "key-resources": KeyResources.objects.get,
    "key-activities": KeyActivities.objects.get,
    "key-partnership": KeyPartnership.objects.get,
    "cost-structure": CostStructure.objects.get,
}
Вернуться на верх