Выбор специальных элементов по ключу foregin в django

У меня есть две модели

class Product(models.Model):
    name = models.CharField(max_length=50)
    averageRating = models.IntegerField(null=True, blank=True)
    ratingCount = models.IntegerField(null=True, blank=True)
    cover = models.ImageField(upload_to='images/', default=None, blank=True, null=True)
    ...

и

class VariantProduct(models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    mainPrice = models.IntegerField()
    discountPrice = models.IntegerField(null=True, blank=True)

это означает, что разные варианты продуктов имеют разные цены.

теперь мне нужен вариант продукта, который имеет минимальную цену

в SQL я думаю, что этот код работает для моей цели но я не знаю, как я могу получить этот результат в Django

Вы можете использовать аннотацию, чтобы прикрепить минимальную цену VariantProducts, прикрепленных к объектам Product:

from django.db.models import Min

Product.objects.annotate(minimum_main_price=Min('variantproduct__mainPrice'))
Вернуться на верх