Как создать очередь из записей на джанго?

В общем когда я экспереминтировал с возможностями Django у меня возник вопрос каким образом я моггу добавить очередь для записей моделей, например у меня есть пару блоков и мне нужно что бы на первом блоке у меня выводилась модель которая была зарегистрированна первой а на втором блоке должна выводится следующая запись. Каким образом я могу это сделать ?введите сюда описание изображения

вот пример query_set

class IndexView(generic.ListView):
template_name = 'article/sale.html'
model = Goods
context_object_name = 'goods'

    def get_queryset(self):
    return Goods.objects.order_by('-pub_date')[:1]

когда я редактирую код так

class IndexView(generic.ListView):
    template_name = 'article/sale.html'
    model = Goods
    context_object_name = 'goods'

    def good(request):
        queryset = Goods.objects.all()
        return render(request, 'index.html', context={'queryset': queryset})

В html я вывожу запись так

  {% for good in queryset %}
        <h1 class="price" >{{ good.price2_text }}</h1>
  {% endfor %}

в итоге вот что показывает введите сюда описание изображения

Вот код models.py

class Goods(models.Model):
description_text = models.CharField(max_length=200)
price_text = models.CharField(max_length=200)
image_sale = models.ImageField(blank=True, upload_to='images/')


description1_text = models.CharField(max_length=200)
price1_text = models.CharField(max_length=200)
image1_sale = models.ImageField(blank=True, upload_to='images/')


description2_text = models.CharField(max_length=200)
price2_text = models.CharField(max_length=200)
image2_sale = models.ImageField(blank=True, upload_to='images/')
pub_date = models.DateTimeField('date published')



def __str__(self):
    return self.description_text

def __str__(self):
    return self.price_text


def __str__(self):
    return self.description1_text

def __str__(self):
    return self.price1_text


def __str__(self):
    return self.description2_text

вот код блока:

     {% for good in queryset %}
    <img class="image" src="{{good.image2_sale.url }}">
    {% endfor %}
      {% for good in queryset %}
        <h1 class="description">{{ good.description2_text }}</h1>
      {% endfor %}
  <a class="buy" href="#openModal" >
    <span >Купить</span></a>
  {% for good in queryset %}
        <h1 class="price" >{{ good.price2_text }}</h1>
  {% endfor %}
но с этим кодом вообще ничего не показывает


Ответы (1 шт):

Автор решения: bolt_py

Вам нужно достать все записи этой модели из базы:

queryset = Products.objects.all()

Передайте queryset в функции которая переносит вас на нужную страницу. Например:

def some_html_page_view(request):
    queryset = Products.objects.all()
    return render(request, 'your_html_template_path', context={'queryset': queryset})

С помощью context мы можем передавать свои данные на страницу. Переопределите вашу модель следующим образом:

class Products(models.Model):
   name = models.CharField(max_length=256)
   description = models.TextField()
   image = models.ImageField(upload_to='images/')
   price = models.IntegerField()
   pub_date = models.DateTimeField(auto_now_add=True)

   def __str__(self):
      return self.name

Вы создали модель по которой будут создаваться объекты. Вы можете создать сколько угодно объектов, не нужно каждый раз для этого обновлять модель и вносить новые поля. Код html должен выглядеть так:

some html code
....
<div>
    {% for object in queryset %}
  
    <h1>{{ object.name }}</h1>
    <div>
        <img src='path_to_your_image/{{ object.image }}'></img>
        <p>{{ object.description }}</p>
        {{ object.price }}
    </div>
                 
    {% endfor %}
</div>

....

Для получения более детальной информации советую почитать документацию по языку шаблонов django

→ Ссылка