#django #django-templates #django-views
#django #django-шаблоны #django-представления
Вопрос:
Я новичок в django, я пытаюсь импортировать данные из базы данных с помощью нескольких фильтров.
views.py
from django.shortcuts import render
from django.http import HttpResponse
from .models import NodesdataArchive
# Create your views here.
def home_view(request, *args, **kwargs):
data = NodesdataArchive.objects.filter(status=1, vendor='F5', location='NA')
host = {
"dns" : data
}
return render (request, "home.html", {'posts': host})
После использования нескольких запросов я выбираю только объект «dns» для отображения. когда я проверил значение переменной «хост», она показала правильный вывод. когда я загружаю его в шаблон html, он показывает полный вывод, который отображается в переменной «host», а не только точное значение.
текущий вывод :
«Набор запросов [NodesdataArchive: объект NodesdataArchive (austin)>]>»
Ожидайте, что вывод будет отображаться в шаблоне html:
остин
Пожалуйста, помогите, спасибо!!!
models.py
class NodesdataArchive(models.Model):
ip_address = models.CharField(db_column='IP_Address', max_length=50, blank=True, null=True) # Field name made lowercase.
dns = models.CharField(db_column='DNS', max_length=255, blank=True, primary_key=True) # Field name made lowercase.
vendor = models.CharField(db_column='Vendor', max_length=255, blank=True, null=True) # Field name made lowercase.
location = models.CharField(db_column='Location', max_length=255, blank=True, null=True) # Field name made lowercase.
status = models.CharField(db_column='Status', max_length=20, blank=True, null=True) # Field name made lowercase.
Ответ №1:
Предположительно, в вашем шаблоне у вас есть
{{ dns }}
Попробуйте
{% for item in dns %}
{{ item }}
{% endfor %}
Объяснение:
Вы загружаете набор запросов, а не конкретный элемент, потому что вы используете filter()
. Если вы знаете, что только одна запись будет соответствовать критериям фильтра, используйте NodesdataArchive.objects.get(status=1, vendor='F5', location='NA')
, и тогда {{ dns }} будет работать в шаблоне.
Комментарии:
1. у меня есть запрос из filter для получения, если я упомяну {{ dns }} в шаблоне, на веб-странице ничего не отображается. если я упомяну {{ posts.dns }}, он отображается на этот раз
NodesdataArchive object (austin)
. Я также пробовал с циклом, но ничего не отображается.2. Извините, я недостаточно внимательно прочитал ваш пост. Попробуйте
{{ posts.dns }}
. Для этого может потребоваться выполнить цикл, как показано ранее3. если я использую цикл, я получаю сообщение об ошибке Объект ‘NodesdataArchive’ не повторяется , если я использую без цикла
{{ posts.dns }}
, я получаю вывод в видеNodesdataArchive object (austin)
4.
{{ posts.dns.fieldname }}
гдеfieldname
то, что вы хотите напечатать5. я нашел решение. для запроса с одним значением =
NodesdataArchive.objects.get(status=1, vendor='F5', location='NA').dns
и для множественной записиfor data in NodesdataArchive.objects.filter(status=1, vendor='F5', location='NA'): print(data.dns)
Спасибо за вашу помощь @HenryM