Сортировка товаров на основе приза в электронной коммерции
Я пытаюсь выполнить сортировку призов (от низкого к высокому и наоборот) на вариантах продуктов на моем сайте электронной коммерции. Поскольку я новичок в этом, я немного запутался.
Вот моя модель:
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"> </i> Add to Cart</a>
</div>
<div class="divLoad" style="display: none;"></div>
</div>
<div class="clearfix"> </div>
</div>
</a>
</div>
{% endif %}
{% endfor %}
{% endfor %}
Теперь мне нужно отсортировать их по цене. Как я могу это сделать, поскольку сортировка производится не непосредственно по продукту, а по продажной цене вариантов продукта...