models.py
class Data(models.Model):
price = models.CharField(max_length=264,unique=False,blank=True,null=True)
shipping = models.CharField(max_length=264,unique=False,blank=True,null=True)
netprice = models.CharField(max_length=264,unique=False,blank=True,null=True)
points = models.CharField(max_length=264,unique=False,blank=True,null=True)
def __str__(self):
return str(self.price)
views.py
def index(request):
az_list=list(Data.objects.all())
return render(request,{'az_list':az_list,'loop':range(500)})
index.html
{% for i in loop %}
{{ az_list.i.price}}
{{ az_list.i.shipping}}
{{ az_list.i.netprice}}
{{ az_list.i.points}}
{% endfor %}
это первый фрагмент, у меня есть 4 списка, таких как az_list, ay_list, ax_list, ap_list, и они находятся в таблице, поэтому их нужно перебрать в одном цикле
тогда вам нужно использовать zip(..)
.
тогда объясните, как я могу разобрать элементы
спасибо большое, это сработало !!
В шаблоне Django вы не можете легко получить я-й элемент списка без фильтра шаблона или тега шаблона. К тому же это плохой дизайн. Метод Pythonic для перебора списка - это, в общем, итерация по списку. Таким образом, вы можете написать это так:
{% for element in az_list %}
{{ element.price}}
{{ element.shipping}}
{{ element.netprice}}
{{ element.points}}
{% endfor %}
Если вы хотите предел количество элементов, которые вы хотите отобразить, вы можете сделать это, установив ограничение в запросе, например:
def index(request):
az_list = Data.objects.all()[:500]
return render(request, 'template.html', {'az_list': az_list})
Это также повысит производительность, поскольку теперь вы выбираете не более 500 записей из базы данных, а не сначала выбираете записи все, а затем визуализируете только первые 500.
РЕДАКТИРОВАТЬ: если вы хотите, чтобы одновременно перебирал несколько итераций, вы можете использовать zip(..)
. Например:
def index(request):
ax_list = Model1.objects.all()
ay_list = Model2.objects.all()
az_list = Model3.objects.all()
return render(
request,
'template.html',
{'all_data': zip(ax_list, az_list)}
)
а затем мы можем перебирать такие элементы, как:
{% for axi, ayi, azi in all_data %}
{{ axi.price}}
{{ axi.shipping}}
{{ axi.netprice}}
{{ axi.points}}
{% endfor %}
Здесь axi
, ayi
и azi
- это элементы в трех списках с индексом одно и тоже.
Почему бы вам не зациклить напрямую на
az_list
? Вы не можете получитьi
-й индекс элемента в шаблонах Django (по крайней мере, без фильтра шаблона или тега шаблона).