Как вывести список товаров в фиксированной позиции?

fixed position in listing

Здравствуйте, у меня давно не получалось это сделать. Может ли кто-нибудь показать мне, как это сделать?

После поиска товара возможно ли, чтобы он отображался именно в таком формате?

это модель.

class Product(BaseModel):
    
    owner = models.ForeignKey(
        'account.Account',
        on_delete=models.CASCADE,
        blank=False,
        null=False,
        verbose_name=_("Owner"),
        )

    title = models.CharField(
        max_length=150,
        help_text=_("User-friendly attribute name"),
        verbose_name=_("Name"),
        )
    
    location = models.ForeignKey(
        'tag_map.Location',
        on_delete=models.PROTECT,
        blank=True,
        null=True
    )

    rank        = models.IntegerField(blank=True, null=True)
    is_featured = models.BooleanField(default=False, db_index=True)

class Tariff(BaseModel): name = models.CharField(max_length=100, verbose_name=_('Tariff Name')) duration_in_days = models.PositiveIntegerField(default=0, verbose_name='Duration in Days') duration_in_hours = models.PositiveIntegerField(default=0, verbose_name=«Duration in Hours») цена = models.DecimalField(default=0, max_digits=10, decimal_places=2) active = models.BooleanField(default=False)

def __str__(self):
    return f"{self.name} ({self.duration_in_days} days, {self.duration_in_hours} hours) -- {self.price} uzs"

def total_duration(self):
    return timedelta(days=self.duration_in_days, hours=self.duration_in_hours)

class FeaturedProduct(BaseModel):

    product = models.OneToOneField(
        'product.Product', 
        on_delete=models.CASCADE,
        related_name='featureds',
        verbose_name=_("Product"))
    
    tariff = models.ForeignKey(
        'product.Tariff', 
        on_delete=models.PROTECT,
        blank=True,
        null=True,
        verbose_name="Tariff"
    )

    start_time = models.DateTimeField(default=now, verbose_name="Start Time")
    end_time = models.DateTimeField(blank=True, null=True, verbose_name="End Time")
    
    def is_active(self):
        return now() <= self.end_time
    
    
Вернуться на верх