TemplateSyntaxError无法分析其余部分:“发件人”窗体过滤器()'

2024-10-04 03:25:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将queryset的一些值放在html模板中。 这是我的html:

<ul class="dropdown-menu">
              {% for i in form.filter(university="UPF - Universitat Pompeu Fabra") %}
                <li ><a href="#">{{ i.degree }}</a></li>
                <li role="separator" class="divider"></li>
              {% endfor %}
            </ul>

但是当我给页面充电时,它会启动以下错误:

^{pr2}$

shell中打印的queryset的值如下所示: enter image description here

My views is the following one:

    from .models import Universitys

def index(request):
    universitys = Universitys.objects.all()
    context = {"form":universitys}
    return render(request,"index.html", context)

和型号:

class Universitys(models.Model):
 data = models.DateTimeField('date created', auto_now_add=True)
 university = models.CharField(max_length=50)
 degree = models.CharField(max_length=50)
 degreeMark = models.DecimalField(decimal_places=3,max_digits=5)

 def __str__(self):
    return '%s %s %f' % (self.university, self.degree, self.degreeMark)

如果你能帮我,我会很感激的。在


Tags: selfformindexmodelsrequestdefhtmlli
2条回答

是的,我理解你给我解释的解决方案,但我需要过滤取决于你选择的大学的学位。由于这个原因,我把视图中的所有对象都传递给可以按我喜欢的方式处理数据库,我不知道在django模板中实现这种操作是不可能的。在

我再解释一遍我的问题,看看你有没有别的解决办法。我通过了帖子中解释的模型,因为我正在为我的应用程序做一个下拉菜单或菜单选择,我需要过滤我以前选择的大学的学位。在

模板如下:

<select id="font">
    {% for e in form %}
      <option>{{ e.university }}</option>
      <li role="separator" class="divider"></li>
    {% endfor %}
  </select>
  <select id="font">
    {% for i in form.filter(university="UPF - Universitat Pompeu Fabra") %}
      <option>{{ i.degree }}</option>
      <li role="separator" class="divider"></li>
    {% endfor %}
  </select>
  <p><label for="basic-url">2. Crea tu escenario en las PAU</label></p>

我想一个可能的解决办法是先和大学联系,然后根据选择,做一个对象.过滤器(),并再次将另一个上下文传递给模板。我不确定这个解决方案,可能还有其他方法可以做得更好。。在

Django默认模板引擎不允许在模板内执行此类操作。推荐的方法是在上下文中添加一个上下文变量,并在模板的forloop中使用该变量。比如:

def index(request):
    universities = Universities.objects.filter(university="UPF - Universitat Pompeu Fabra")
    context = {"universities": universities}
    return render(request, "index.html", context)

在模板上:

^{pr2}$

如果您只使用degree字段,那么您可以做的另一件事就是在queryset上只获取这个值。因此,我还将universities查询集更改为:

universities = Universities.objects.filter(university='UPF - Universitat Pompeu Fabra').values_list('degree', flat=True)

有关values_list的更多信息,请参阅docs

相关问题 更多 >