Как получить все отношения для элементов в модели базы данных в 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,
}