Передать одну запись базы данных из шаблона django в html - PullRequest
0 голосов
/ 03 апреля 2020

Добрый вечер,

надеюсь, что вы все здоровы в это критическое время!

Я хочу использовать время, чтобы снова поработать над моим django веб-приложением.

На этот раз, помимо отображения всех моих клиентов на странице, я хочу вернуть информацию об одном клиенте, которую я выбрал на веб-сайте.

Я получаю информацию обо всех клиентах в базе данных, чтобы показать на веб-сайте, и когда я использую печать в моем views.py, я вижу всю информацию из одного объекта.

Однако она не будет отображаться в моем шаблоне: (

Здесь мой код (сначала модель):

class PrivateCustomer (models.Model):
WEIBLICH = 'W'
MANNLICH = 'M'
DIVERS = 'D'
KEINEANGABE = 'K'
GENDER =(
(WEIBLICH, 'Weiblich'),
(MANNLICH, 'Maennlich'),
(DIVERS, 'Divers'),
(KEINEANGABE, 'Keine Angabe')
)

kundennummer = models.CharField(max_length=5, null=False, primary_key=True)
vorname = models.CharField(max_length=30, null=False)
nachname = models.CharField(max_length=30, null=False)
adresse = models.CharField(max_length=50, null=False)
postleitzahl = models.CharField(max_length=5, null=False)
stadt = models.CharField(max_length=30, null=False)
geschlecht = models.CharField(max_length=3, null=False, choices=GENDER)
geburtstag = models.DateField(null=True)
telefon = models.CharField(max_length=30, null=True)
mobil = models.CharField(max_length=30, null=True)
email = models.CharField(max_length=80, null=True)
datum = models.DateField(null=False)
 # def __str__(self):
 #   return self.nachname

затем функция в views.py:

def showCustomer(request):
if request.method == 'POST':
    kd = request.POST['kundennummer']
    customerSingle = PrivateCustomer.objects.filter(kundennummer=kd)
    form = PrivateCustomerForm()
    customers = PrivateCustomer.objects.all()
    print(type(customers[1]))
    print(type(customerSingle[0]))
    customerSingle = customerSingle[0]
    print(customerSingle.nachname)
    return render(request, 'basicERP/kunden.html', {'form' : form, 'customers' : customers, 'customerSingle' : customerSingle})
else:
    return HttpResponse("fail")

и код моего шаблона:

<div class="suchbereich">
        <div class="progress-table-wrap" id="suchtabelle">
            <div class="filterbereich">

            </div>
            <div class="progress-table" id="kundentabelle">
                <div class="table-head">
                    <button onclick="sortTable(0)" class="serial genric-btn default circle" style="font-size:14px; width:50px;">K-Nr.</button>
                    <button onclick="sortTable(1)" class="country genric-btn default circle" style="font-size:14px; width:150px;">Name</button>
                    <!--<button onclick="sortTable(2)" class="adresse genric-btn default circle" style="font-size:14px;">Adresse</button>
                    <button onclick="sortTable(3)" class="visit genric-btn default circle" style="font-size:14px;">Geschlecht</button>
                    <button onclick="sortTable(4)" class="visit genric-btn default circle" style="font-size:14px;">Geburtstag</button>
                    <button onclick="sortTable(5)" class="visit genric-btn default circle" style="font-size:14px;">Festnetz</button>
                    <button onclick="sortTable(6)" class="visit genric-btn default circle" style="font-size:14px;">Mobil</button>
                    <button onclick="sortTable(7)" class="email genric-btn default circle" style="font-size:14px;">E-Mail</button>-->
                    <div class="visit genric-btn default circle" style="font-size:14px;">Anzeigen</div>
                    <div class="visit genric-btn default circle" style="font-size:14px;">L&oumlschen</div>
                </div>
                    {% for customer in customers %}
                        <div class="table-row" onclick="setActive(this)">
                            <div class="serial" style="width:50px;">{{customer.kundennummer}}</div>
                            <div class="country" style="width:150px;">{{customer.nachname}}, {{customer.vorname}}</div>
                           <!-- <div class="adresse">{{customer.adresse}}, {{customer.postleitzahl}}, {{customer.stadt}}</div>
                            <div class="visit">{{customer.geschlecht}}</div>
                            <div class="visit">{{customer.geburtstag}}</div>
                            <div class="visit">{{customer.telefon}}</div>
                            <div class="visit">{{customer.mobil}}</div>
                            <div class="email">{{customer.email}}</div>-->
                           <button onclick="showCustomer(this)" class="genric-btn primary circle"> Anzeigen</button>
                            <button onclick="deleteCustomer(this)" class="genric-btn primary circle"> L&oumlschen</button>
                        </div>
                    {% endfor %}
            </div>
        </div>
        <div class="anzeigebereich">
            <div class="block1">
                <p>Adresse: {{customerSingle.nachname}}</p>{{customerSingle}}
                <p>PLZ, Ort: </p>{{customerSingle.postleitzahl}}, {{customerSingle.stadt}}
            </div>
            <div class="block2">

            </div>
            <div class="block3">

            </div>
        </div>
    </div>

Первая таблица заполняется нормально, я вижу всех клиентов. Когда я звоню {{customerSingle.stadt}}, я ничего не получаю.

Выходные данные для 3 вызовов функции печати в views.py:

<class 'erp.models.PrivateCustomer'>
<class 'erp.models.PrivateCustomer'>
Grünig

Третья строка - это фамилия указанного объекта.

Любой Спасибо за помощь, спасибо!

РЕДАКТИРОВАТЬ

Когда я изменяю свой код в views.py на это:

def showCustomer(request):
if request.method == 'POST':
    kd = request.POST['kundennummer']
    customerSingle = PrivateCustomer.objects.filter(kundennummer=kd)
    form = PrivateCustomerForm()
    customers = PrivateCustomer.objects.all()
    customerSingle = customers.get(kundennummer=kd)
    #print(type(customers[1]))
    #print(type(customerSingle[0]))
    #customerSingle = customerSingle[0]
    mutti = 'hello'
    context = {
    #'form' : form,
    #'customers' : customers,
    #'customerSingle' : customerSingle,
    'dati': mutti
    }
    print(customerSingle.nachname)
    print('hallo')
    return render(request, 'basicERP/kunden.html', context)
else:
    return HttpResponse("fail")

Сайт по-прежнему отображается с клиентом информация, но данные 'hello' из переменной dati не отображаются.

Я добавил вторую функцию print (), чтобы проверить, что вызывается нужная функция. Это нормально.

Я не понимаю, как он может правильно отображаться, когда я не передаю переменную customer.

1 Ответ

0 голосов
/ 03 апреля 2020

Ваш код, кажется, в порядке.

Вы пытались остановить сервер и перезапустить его?

Когда ничего не помогает, попробуйте что-то изменить:

def showCustomer(request):
if request.method == 'POST':
    kd = request.POST['kundennummer']
    form = PrivateCustomerForm()
    customers = PrivateCustomer.objects.all()
    customerSingle = customers.get(kundennummer=kd)
    context = {
        'form' : form,
        'customers' : customers,
        'customerSingle' : customerSingle
    }
    print(context)
    return render(request, 'basicERP/kunden.html', context)
else:
    return HttpResponse("fail")

Попробуйте проверить, соответствует ли контекст тому, что вы ожидаете.

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