我有三张桌子:
Table 1 : order
Fields: id, client_reference, price and status
(status is a foreignkey linked to order_status.id)
Table 2 : order_status
Fields: id, lastupdate
Table 3 : order_status_i18n
Fields: id, order_status_id, language and label
(order_status_id is also a foreignkey linked to order_status.id)
我想做的是
order_status_i18n
label
而不是
order_status_id
基于用户语言,因此SQL请求如下:
SELECT o.client_reference as reference, o_s_i18n.label
FROM
order AS o
INNER JOIN order_status_i18n AS o_s_i18n
ON o.status=o_s_i18n.order_status_id WHERE o_s_i18n.language='the language';
order的模型包含一个链接到
order_status model
但不是
订单状态
,所以我试着使用
Order.objects.filter(some_filters).prefetch_related('status')
.filter(status__in=OrderStatusI18N.objects.filter(language='the_language'))
这给了我一个queryset冲突,告诉我应该使用queryset
OrderStatus
而不是
OrderStatusI18N
我完全同意。
但是无论如何,使用django orm管理这样一个请求的好方法是什么?