Как показать все купленные пользователем товары в django-oscar?

Я пытаюсь вывести все купленные пользователем товары на django-oscar и у меня возникли некоторые проблемы.

Я могу вывести все заказы пользователя в order.order

OrderProduct.objects.filter(user=user)

но он не печатает каждый товар по отдельности, если заказ включает несколько товаров (которые сохраняются в order.line). Я также могу вывести все товары в orders.line

LineProduct.objects.all() 

но я не могу отфильтровать их по пользователю, так как в order.line.

нет поля user.

Я могу добавить поле пользователя в order.line и копировать из order каждый раз, когда заказ размещается, но я не думаю, что это лучшее решение.

У кого-нибудь есть идеи для решения?

Заранее спасибо

Получить список всех продуктов, приобретенных пользователем, можно с помощью:

Product.objects.filter(line__order__user=user)

Это следование отношениям внешнего ключа от Line к Product назад, а затем от Line к Order к User вперед (см. документацию о том, как это работает).

Этот набор запросов, вероятно, приведет к дубликатам, поэтому вы можете добавить в конце предложение distinct() в зависимости от того, что вы хотите с ним сделать.

Вернуться на верх