我有一个巨大但不复杂的 sql 查询,必须转换为 django orm 查询
I have a huge but not complex sql query that must convert to django orm query
我必须转换以下 sql 查询,但我不知道如何将其转换为 django orm 中的相等查询,如果您可以的话,我将非常高兴:)))
select dialog_messages.*,
sender.first_name as sender_first_name,
sender.last_name as sender_last_name,
sender.cell_number as sender_cell_number,
sender.avatar_full_path as sender_avatar_full_path, receiver.first_name as receiver_first_name,
receiver.first_name as receiver_first_name,
receiver.last_name as receiver_last_name,
receiver.cell_number as receiver_cell_number, receiver.avatar_full_path as receiver_avatar_full_path from dialog_messages`` inner join user sender on ``sender``.``user_id`` = dialog_messages``.``sender_id`` inner join user receiver on receiver``.``user_id`` = ``dialog_messages``.``receiver_id`` where `dialog_id`` = ? order by ``dialog_messages``.``id`` desc
您应该使用 select_related
(并查看 prefetch_related
)。您可以在以下位置查看参考资料:
在您的代码中,在不了解您的模型的情况下,我认为您可以从以下内容开始:
DialogMessage.objects.select_related('sender', 'receiver')
我必须转换以下 sql 查询,但我不知道如何将其转换为 django orm 中的相等查询,如果您可以的话,我将非常高兴:)))
select dialog_messages.*,
sender.first_name as sender_first_name,
sender.last_name as sender_last_name,
sender.cell_number as sender_cell_number,
sender.avatar_full_path as sender_avatar_full_path, receiver.first_name as receiver_first_name,
receiver.first_name as receiver_first_name,
receiver.last_name as receiver_last_name,
receiver.cell_number as receiver_cell_number, receiver.avatar_full_path as receiver_avatar_full_path from dialog_messages`` inner join user sender on ``sender``.``user_id`` = dialog_messages``.``sender_id`` inner join user receiver on receiver``.``user_id`` = ``dialog_messages``.``receiver_id`` where `dialog_id`` = ? order by ``dialog_messages``.``id`` desc
您应该使用 select_related
(并查看 prefetch_related
)。您可以在以下位置查看参考资料:
在您的代码中,在不了解您的模型的情况下,我认为您可以从以下内容开始:
DialogMessage.objects.select_related('sender', 'receiver')