Как показать все купленные пользователем товары в 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() в зависимости от того, что вы хотите с ним сделать.