Как получить аннотированные атрибуты в шаблоне из DetailView?
Я работаю над небольшой электронной коммерцией. Для модели 'Product' я отслеживаю запасы с помощью Custom Manager и метода Products.objects.with_stock()
, который использует аннотации (я обязан это делать, я никак не могу добавить атрибут запаса в Product)
В ListView всех товаров довольно просто добавить склад, чтобы получить к нему доступ из шаблона:
# app/views.py
class ProductListView(ListView):
...
def get_stock(self, obj):
return obj.stock
def get_queryset(self):
return super().get_queryset().with_stock()
А затем в шаблоне я просто вызываю его:
<!-- templates/home.html-->
{% for product in products %}
<p> Stock: {{product.stock}} <p>
{% endfor %}
Как мне сделать что-то подобное для DetailView?
Учитывая, что DetailView получает конкретный экземпляр объекта, где или как я могу запустить что-то подобное тому, что я сделал в ListView? Где я могу запустить метод запроса, который воздействует на все объекты в целом, чтобы затем я мог получить доступ к нему таким же образом из шаблона?
Проще некуда: просто сделайте то же самое в DetailView:
# app/views.py
class ProductDetailView(DetailView):
...
def get_stock(self, obj):
return obj.stock
def get_queryset(self):
return super().get_queryset().with_stock()