我正在按照Django教程进行精益,结果在x处出现了TypeError,我不知道我做错了什么。
这里是模型
class articulos(models.Model):
nombre = models.CharField(max_length=30)
seccion = models.CharField(max_length=30)
precio = models.IntegerField()
观点如下
from django.shortcuts import render
from django.http import HttpResponse
from GestionPedido.models import articulos
def buscar(request):
if request.GET["prd"]:
#mensaje = "Artículo buscado: %r" %request.GET["prd"]
producto = request.GET["prd"]
articulo = articulos.objects.filter(nombre__icontains = producto)
return render(request, "resultadobusqueda.html", {"articulos":articulos, "query":producto})
else:
mensaje = "No has introducido nada %r"
return HttpResponse(mensaje)
殿在此
<html>
<body>
<p>Estas buscando: <strong>{{query}}</strong></p>
{% if articulos %}
<p>Articulos encomtrados {{articulos|length}} articulos</p>
<ul>
{% for articulo in articulos %}
<li>
{{articulos.nombre}}
</li>
{% endfor %}
</ul>>
{% else %}
<p>Articulos no encontrado</p>
{% endif %}
</body>
</html>
它确实标志着错误 {% for articulo in articulos %}
你有一个拼写错误,在
{"articulos":articulos, ...
变量名是 articulo
没有's'。你传递的是模型,而不是查询集。
articulo = articulos.objects.filter(nombre__icontains = producto)
return render(request, "resultadobusqueda.html", {"articulos":articulos, "query":producto})
你传递的是 "articulos",即模型,而不是 "articulo",即queryset。