Данные не отображаются в HTML... вместо них отображается пустота
Я создал базу данных и также создал форму для добавления данных в нее. Но когда я пытаюсь отобразить данные в html, то ничего не видно. Моя модель
class Bank(models.Model):
bankname=models.CharField(max_length=50)
acctitle=models.CharField(max_length=50)
city=models.CharField(max_length=50)
branchname=models.CharField(max_length=50, null=True)
branchcode=models.IntegerField(default=0)
adddate=models.DateTimeField(default=timezone.now)
def __str__(self):
return self.bankname
Мои взгляды
def add_bank(request):
if request.method=='POST':
bankname=request.POST.get('bankname')
acctitle=request.POST.get('acctitle')
city=request.POST.get('city')
branchname=request.POST.get('branchname')
branchcode=request.POST.get('branchcode')
data=Bank(bankname=bankname,acctitle=acctitle,city=city,branchname=branchname, branchcode=branchcode)
data.save();
return render(request, 'add_bank.html')
def add_amount(request):
banks= Bank.objects.all()
return render(request, 'add_amount.html', {'banks':banks})
Мой Html для отображения данных
<select name="banks" class="form-control custom-select">
<option value="">Bank:</option>
{% for bank in banks %}
<option value="{{ forloop.counter }}">{{ banks.bankname }}</option>
{% endfor %}
</select>
Я не знаю, где я делаю ошибку
Замените banks.bankname
на bank.bankname
в этой строке:
<option value="{{ forloop.counter }}">{{ banks.bankname }}</option>
Чтобы понять, почему это не привело к ошибке, вы можете обратиться к this.
Вы используете цикл for, в котором каждый элемент (объект) модели банков упоминается вами в цикле как bank. Поэтому используйте "bank.bankname".
eg.
<option value="{{ forloop.counter }}">{{ bank.bankname }}</option>
Кроме того, в качестве лучшей практики попробуйте использовать основной ключ вашей таблицы в значении в теге Option. Это поможет вам лучше ссылаться на конкретные данные (объект таблицы) в javascript для отправки данных в представления.
eg.
<option value="{{ bank.banks_primary_key }}">{{ bank.bankname }}</option>