gpt4 book ai didi

django - Django 模板中的嵌套循环

转载 作者:行者123 更新时间:2023-12-04 17:24:08 25 4
gpt4 key购买 nike

我无法理解这一点。我需要以某种方式访问​​父循环中的对象,但我不确定如何访问。这是我到目前为止所想出的。我在代码中用 标记了有问题的区域XXX :

模板:

{% for item in ingrcat %}
<h2>{{ item.name }}</h2>
<ul>
{% for ingr in XXX %}
<li><a href="#" id="i{{ ingr.id }}">{{ ingr.name }}</a></li>
{% endfor %}
</ul>
{% endfor %}

XXX - 应该是属于当前在父循环中循环的成分类别的成分列表。

查看:
def home(request):
if request.user.is_authenticated():
username = request.user.username
email = request.user.email
foods = Food.objects.filter(user=request.user).order_by('name')
ingredients = Ingredience.objects.filter(user=request.user).order_by('name')
ingrcat = IngredienceCategory.objects.filter(user=request.user)

context = {}
for i in ingredients:
context[i.category.name.lower()] = context.get(i.category.name.lower(), []) + [i]

newcontext = {'foods': foods, 'ingredients': ingredients, 'ingrcat': ingrcat, 'username': username, 'email': email,}
else:
context = {}
newcontext = {}

context = dict(context.items() + newcontext.items())

return render_to_response('home.html', context, context_instance=RequestContext(request))

型号:
from django.db import models
from django.contrib.auth.models import User

class IngredienceCategory(models.Model):
name = models.CharField(max_length=30)
user = models.ForeignKey(User, null=True, blank=True)

class Meta:
verbose_name_plural = "Ingredience Categories"

def __unicode__(self):
return self.name


class Ingredience(models.Model):
name = models.CharField(max_length=30)
category = models.ForeignKey(IngredienceCategory, null=True, blank=True)
user = models.ForeignKey(User, null=True, blank=True)

class Meta:
verbose_name_plural = "Ingredients"

def __unicode__(self):
return self.name


class Food(models.Model):
name = models.CharField(max_length=30)
ingredients = models.ManyToManyField(Ingredience)
html_id = models.CharField(max_length=30, null=True, blank=True)
user = models.ForeignKey(User, null=True, blank=True)

class Meta:
verbose_name_plural = "Foods"

def __unicode__(self):
return self.name

最佳答案

您可以使用向后关系。

{% for item in ingrcat %}
<h2>{{ item.name }}</h2>
<ul>
{% for ingr in item.ingredience_set.all %}
<li><a href="#" id="i{{ ingr.id }}">{{ ingr.name }}</a></li>
{% endfor %}
</ul>
{% endfor %}

请参阅文档:

https://docs.djangoproject.com/en/dev/topics/db/queries/#following-relationships-backward

关于django - Django 模板中的嵌套循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13232320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com