Django: отображение значений модели в таблице - PullRequest
0 голосов
/ 10 июня 2018

Я новичок в Джанго и мне нужна помощь.У меня создан смутно работающий сайт.У меня есть модель, которая выглядит следующим образом:

from django.db import models

class InductiveSensors(models.Model):
   Part_No = models.CharField(max_length=250)
   Manufacturer = models.CharField(max_length=250)
   Sn = models.CharField(max_length=250)
   AssuredSn = models.CharField(max_length=250)


def __str__(self):
    return InductiveSensors.Manufacturer

Есть несколько страниц.один, который дает мне список всех элементов в базе данных

{% extends "ESensFind/header.html" %}

{% block content %}
{% for InductiveSensors in object_list %}
<h5>{{ InductiveSensors.Manufacturer}}<a 
href="/Inductive_Search/{{InductiveSensors.id}}"> 
{{InductiveSensors.Part_No}}</a></h5>
{% endfor %}
{% endblock %}

Когда нажата ссылка {{InductiveSensors.Part_No}}, он открывает другую страницу.На котором я хотел бы отобразить эту запись базы данных в таблице с информацией

   Part_No = models.CharField(max_length=250)
   Manufacturer = models.CharField(max_length=250)
   Sn = models.CharField(max_length=250)
   AssuredSn = models.CharField(max_length=250)

мои URL выглядят так:

from django.conf.urls import url, include
from django.views.generic import ListView, DetailView
from Inductive_Search.models import InductiveSensors

urlpatterns = [  
url(r'^$',ListView.as_view(queryset=InductiveSensors.objects.all().order_by
("Manufacturer") #THIS PAGE IS THE LIST OF ALL DATABASE ENTRIES#
[:25],template_name="Inductive_Search/Inductive_Search.html")),
url(r'^(?P<pk>\d+)$', ListView.as_view(model= InductiveSensors, 
template_name = 'Inductive_Search/SensorInfo.html')) #THIS OPENS UP A NEW 
INDEX PAGE AFTER A PARTICULAR DATABASE ENTRY LINK IS CLICKED#

- это второй 2-й URL-код, корректный для работы в сочетаниис "SensorInfo.html"?В «SensorInfo.html» у меня есть этот код, который, я думаю, должен отображать в заголовке даже только информацию о производителе, но он ничего не отображает.

{% extends "ESensFind/header.html" %}

{% block content %}
<h5>{{ InductiveSensors.Manufacturer}}</h5>

{% endblock %}

По сути, я пытаюсь получить SensorInfo.HTML для отображения значений из моей модели, относящихся к этому конкретному индексу в таблице на моей веб-странице.Любая помощь будет оценена.Спасибо

Ответы [ 2 ]

0 голосов
/ 10 июня 2018

Таким образом, решение будет выглядеть примерно так: urls.py?

from django.conf.urls import url, include
from django.views.generic import ListView, DetailView
from Inductive_Search.models import InductiveSensors

urlpatterns = [
   url(r'^$', 
ListView.as_view(queryset=InductiveSensors.objects.all().order_by
("Manufacturer") 
[:25],template_name="Inductive_Search/Inductive_Search.html")),
url(r'^(?P<pk>\d+)$', DetailView.as_view(model= InductiveSensors, 
template_name = 'Inductive_Search/SensorInfo.html'))
]

и в шаблоне

{% extends "ESensFind/header.html" %}

{% block content %}

    <h5>{{ get_object() }}</h5>

{% endblock %}
0 голосов
/ 10 июня 2018

«Правильным» решением является написание подробного представления (производного от DetailView), когда в шаблоне вы можете получить доступ к базовому объекту, используя get_object () или .object.

Если вычтобы реализовать его быстро и грязно, вам нужно получить доступ к аргументу pk и, используя его, получить экземпляр модели и передать его как часть данных контекста.

Я предлагаю вам покопаться в документации, djangoУчебное пособие - хорошее место для начала (https://docs.djangoproject.com/en/2.0/intro/tutorial01/#writing-your-first-django-app-part-1) или читайте о взглядах на основе классов здесь https://docs.djangoproject.com/en/2.0/topics/class-based-views/generic-display/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...