'DeferredAttribute' object has no attribute 'objects' Django
Я хотела сделать фильтрацию по полю ciudades в модели Couriers, но, django мне выдал ошибку.
models.py:
class Couriers(models.Model): #el modelo que crea tabla en la base de datos para transportistas
title = models.CharField(max_length=50, verbose_name='Nombre y apellidos')
estado = models.CharField(max_length=30, verbose_name='Estado Del Pedidoo')
ciudad = models.CharField(max_length=50, verbose_name='Ciudad')
class Meta: #sirve para anadirle el nombre plural y normal en la panel de administrador
verbose_name_plural = 'Transportistas'
verbose_name = 'Transportista'
ordering = ['-title']
views.py:
def index(request):
ciudades = Couriers.ciudad.objects.all()
estados = Couriers.estado.objects.all()
context = {'ciudades': ciudades, 'estados': estados}
return render(request, 'index.html', context)
Ответы (1 шт):
Автор решения: Andrey Maslov
→ Ссылка
Судя по всему ты хочешь сделать не фильтрацию по этим полям, а просто вывести эти поля в шаблон, сделать это можно таким способом.
def index(request):
couriers = Couriers.objects.values("ciudades", "estados")
ciudades = [obj["ciudades"] for obj in couriers]
estados = [obj["estados"] for obj in couriers]
context = {'ciudades': ciudades, 'estados': estados}
return render(request, 'index.html', context)
но не понятно зачем тебе разделять эти два поля отдельно в шаблон, можно просто выдать
return render(request, 'index.html', {"couriers": Couriers.objects.all()})
и в шаблоне уже пробегаться по списку объектов и выводить то поле, которое тебе нужно. Например:
{% for courier in couriers %}
ciudades - {{courier.ciudades}}
estados - {{courier.estados}}
{% endfor %}
Если тебе нужно именно фильтровать по каким-то определенным значениям,тогда записывается так:
ciudades = Couriers.objects.filter(ciudades="required value")
Подробнее про фильтры можно найти тут: https://docs.djangoproject.com/en/3.1/topics/db/queries/#retrieving-specific-objects-with-filters