Django. Выбрать только один связанный объект с наименьшей ценой
models.py
class Product(models.Model):
...
class ProductVariant(models.Model):
product = models.ForeignKey(Product)
price = models.DecimalField()
...
Как одним запросом выбрать Product и связанный с ним ProductVariant, но только один и с наименьшей ценой?
views.py
class ProductList(generic.ListView):
model = Product
template
{% for product in product_list %}
<div class="product-card">
{{ product.name }}
<!--
Вот тут хотелось бы иметь доступ к варианту товара,
при этом не генерировать множество запросов.
-->
{{ product.variant.price }}
{{ product.variant.color }}
</div>
{% endfor %}
Ответы (1 шт):
Автор решения: Za Ars
→ Ссылка
Попробуйте так
class ProductVariant(models.Model):
...
class Meta:
ordering = ['price']
...
ordering указывает сортировку по умолчанию для модели
{% for product in product_list %}
<div class="product-card">
{{ product.name }}
<!--
Вот тут хотелось бы иметь доступ к варианту товара,
при этом не генерировать множество запросов.
-->
{{ product.variant.0.price }}
{{ product.variant.0.color }}
</div>
{% endfor %}
Если будут лишние запросы, используйте `select_related`