Сортировка товаров на основе приза в электронной коммерции

Я пытаюсь выполнить сортировку призов (от низкого к высокому и наоборот) на вариантах продуктов на моем сайте электронной коммерции. Поскольку я новичок в этом, я немного запутался.

Вот моя модель:

class Product(models.Model):
    Name = models.CharField(max_length=250)
    Description = RichTextField(null=True)
    Features = RichTextField(null=True,default=None) 
    Varient_Type = models.ForeignKey(VarientType,on_delete=models.CASCADE)
    Product_Category = models.ForeignKey(Catogory,on_delete=models.CASCADE)
    Product_Brand = models.ForeignKey(Brand,on_delete=models.CASCADE,blank=True,null=True)
    related_product=models.ManyToManyField('Product',blank=True,null=True)
    
    status = models.CharField(default='Active',max_length=20, choices=(
        ('Active','Active'),
        ('Inactive','Inactive')
    ))
    created_at = models.DateTimeField(auto_now_add=True)
    class Meta:
        db_table = "Products"
        ordering = ['-created_at']
    def __str__(self) -> str:
        return self.Name

class Product_Varients(models.Model):
    product=models.ForeignKey(Product,on_delete=models.CASCADE)
    Sku_Code=models.CharField(max_length=100)
    Varient_Values = models.ForeignKey(VarientValues,on_delete=models.CASCADE)
    Selling_Prize = models.DecimalField(max_digits=12,decimal_places=2)
    Display_Prize = models.DecimalField(max_digits=12,decimal_places=2)
    Product_stock = models.PositiveIntegerField(blank=True,null=True)
    created_at = models.DateTimeField(auto_now_add=True)
    status = models.CharField(default='Active',max_length=20, choices=(
        ('Active','Active'),
        ('Inactive','Inactive')
    ))
    class Meta:
        db_table = "Product_Varients"
        ordering = ['-created_at']

class ProductImage(models.Model):
    product=models.ForeignKey(Product,on_delete=models.CASCADE)
    Thumbnail_image = models.ImageField(upload_to='Products',null=True)
    

Я передаю все товары в шаблон и итерирую варианты каждого товара и отображаю только первый вариант. Вот код моего шаблона:

<div class="col-md-9 product-model-sec">
{% for product in products %}
{% for pro in product.product_varients_set.all %} 
{% if forloop.first %}

<div class="product-grid love-grid">
    <div class="more-product"><span> </span></div>
        <div class="product-img b-link-stripe b-animate-go  thickbox">

        <div class="shrt">
            <a href="javascript:void(0)" data-id="{{pro.id}}"  class="button add-Cart add-to-wish-btn" title="Add to Wishlist"></span>Wishlist</a>
        </div>

        {% for  img in product.productimage_set.all%}
        {% if forloop.first %}
        <a href="{% url 'product_item' prod_id=pro.id %}">
            <img src="/media/{{img.Thumbnail_image}}" class="img-responsive" alt="" />
        </a>
            
        {% endif %}
        {% endfor %}

        

        </div>

        <a href="">
            <div class="product-info simpleCart_shelfItem" style="text-align: center;">
                <div class="product-info-cust">
                    <h4>{{pro.product}}-{{pro.Varient_Values.varient_values}}</h4>


                    <div class="" style="font-family: Roboto, Arial, sans-serif">
                        <div class="" style="font-family: Roboto, Arial, sans-serif">
                            <strike ">{{pro.Display_Prize}}/-</strike>
                            </div>

                            <div class="" style="font-family: Roboto, Arial, sans-serif">
                            <span class="item_price">{{pro.Selling_Prize}}/-</span></div>
                    </div>
                    <br>
                    <input type="text" value="1" class="qty" hidden>
                    <div class="add-to-cart">
                    <a  class="add-cart cart-check add-to-cart-btn" id="{{pro.id}}" title="Add to Cart"><i class="fas fa-shopping-bag">&nbsp;</i> Add to Cart</a>
                    </div>
                    <div class="divLoad" style="display: none;"></div>

                </div>
                <div class="clearfix"> </div>
            </div>
        </a>
</div>


{% endif %}
{% endfor %}
{% endfor %}

Теперь мне нужно отсортировать их по цене. Как я могу это сделать, поскольку сортировка производится не непосредственно по продукту, а по продажной цене вариантов продукта...

Вернуться на верх