Я пытаюсь перестроить этот пример:
https://blog.roseman.org.uk/2010/01/11/django-patterns-part-2-efficient-reverse-lookups/
У меня есть модель "Продукт" и модель "Заказ". В заказе есть иностранный ключ к «продукту». Так что за 1 товар у меня N заказов
В моем шаблоне мне нужно отобразить много информации, поэтому я бы не хотел делать "заказ в Product.order_set.all ()" в моем шаблоне
В моем шаблоне, если я напишу:
{{ object_list.1.related_items }}
все хорошо и я получаю то, что хочу
но если я напишу:
{% for i in object_list %}
{{ object_list.i.related_items }}
{% endfor %}
Я не получил результат.
Может кто-нибудь сказать мне, как я решаю эту проблему?
Мой список объектов почти такой же, как в приведенном выше примере:
products = Product.objects.all()
i = 0
qs = Product.objects.all()
obj_dict = dict([(obj.id, obj) for obj in qs])
objects = Order.objects.filter(producttyp__in=qs)
relation_dict = {}
for obj in objects:
relation_dict.setdefault(obj.producttyp_id, []).append(obj)
for id, related_items in relation_dict.items():
obj_dict[id].related_items = related_items
def get(self,request,*args,**kwargs):
context = {'object_list':self.obj_dict}
return render(request,self.template_name,context)
единственное изменение, которое я сделал, это от
obj_dict [id] ._ related_items to obj_dict [id] .related_items из-за недопустимого подчеркивания?!
Как распечатать список в моем шаблоне, например:
- Product A
- Order 1
- Order 2
- Order 5
- Product B
- Order 3
- Order 6
С наилучшими пожеланиями