Сведения о задаче Я работаю над созданием пользовательского API для извлечения данных из трех таблиц на основе предоставленной ключевой информации.
Фон Чтобы уточнить, я 'три таблицы данных - Client, Account и Client_accounts и их структура выглядит следующим образом:
Client
ID (Integer) Primary Key
display_name (varchar)
Accounts
ID (Integer) Primary Key
nickname (varchar)
Client_Accounts
Client_ID (Integer) Foreign Key -> ID from client table
Account_ID (Integer) Foreign Key -> ID from accounts table
В намерении передать идентификатор клиента в мой API и получить все учетные записи (и имена учетных записей), принадлежащиеэтот клиент.
SQL-запрос, который я пытаюсь повторить, выглядит следующим образом:
select
cl.id as client_id,
cl.display_name,
ac.id as account_id,
ac.nickname as account_name
from
datahub_clients cl
join
datahub_client_accounts cl_ac
on
cl.id=cl_ac.client_id
join
datahub_accounts ac
on
cl_ac.account_id=ac.id
where
cl.id=15
;
Готово до сих пор Это то, что я использовал для получения учетных записейдля клиента:
##### For endpoint - get_client_name
@api_view(['GET', 'POST'])
@permission_classes((AllowAny,))
def get_client_name(request):
try:
if request.method == 'GET':
list_of_account_ids = Client_Accounts.objects.filter(client_id=request.GET['id']).values_list('account')
needed_accounts = Accounts.objects.filter(id__in=list_of_account_ids).values('id','nickname')
return Response({'requested client id':request.GET['id'],'identified client name': 'detailed info to go here'}, status=status.HTTP_200_OK)
else:
return Response({'status':'error','message': 'Facepalm moment!'}, status=status.HTTP_403_FORBIDDEN)
Постановка проблемы
1) В приведенном выше коде мне удалось получить соответствующие учетные записи для client_id, однако я могураспечатывать только данные из таблицы счетов.Как также поместить информацию о клиенте в выходные данные (client_id, псевдоним - как показано в запросе SQL)
2) Что такое замена django для SQL 'old_field_name AS some_new_name'?В таблицах данных, показанных выше, в таблицах учетных записей и клиентов есть столбец «ID».Я хочу поместить их вместе в один и тот же вывод JSON и, чтобы иметь возможность различать их, я бы хотел переименовать их.
3) На данный момент в моем наборе запросов есть члены поля из нескольких моделей.Как мне их сериализовать?Я понимаю, что мне нужно написать собственный сериализатор, который будет основан на двух моделях (для примера, показанного выше).Я запутался в том, что указывать в разделе model = и в разделе meta: *. 1028 *