Django: Не удается получить поле bio из таблицы для отображения на странице
Я разработал небольшое тестовое приложение со страницей профиля с информацией о пользователе и биографией. Все отображается, кроме поля bio, это глупо и сводит с ума. Я перепробовал множество комбинаций, но безрезультатно. Пожалуйста, посмотрите мой код ниже: Кто-нибудь, пожалуйста, помогите.
views.py
from django.db import models
from django.contrib.auth.models import User
from django.urls import reverse
# Create your models here.
class TeacherProfile(models.Model):
user = models.OneToOneField(User, null=True, on_delete=models.CASCADE)
bio = models.TextField()
def __str_from__(self):
return self.user
models.py
def teacher_profile(request,pk):
teacher_profile = TeacherProfile.objects.all()
return render(request, 'registration/teacher_profile.html', {
'teacher_profile':teacher_profile
})
html
<div class="container">
<div class="row">
<div class="col-lg-12">
<h1 class="page_heading">Teacher profile</h1>
<strong>Welcome back:</strong> {{user.username}} |
{{user.first_name}} {{user.last_name}} |
{{user.email}} |
<strong></strong>|
<a href="{% url 'edit_teacher_profile_view_url' user.pk %}">edit profile</a><br> |
<a href="{% url 'logout' %}">logout</a><br>
<strong>About me:</strong>
{{user.bio}}
<hr>
</div>
</div>
Как объяснил @Jarad в комментариях выше. Имя переменной, доступное в django-шаблоне, будет teacher_profile, так как именно оно передается в контексте.
'teacher_profile':teacher_profile
Здесь вы можете использовать:
{{ teacher_profile.bio }}
Если вы задаетесь вопросом, почему user.first_name и user.last_name работают. Это потому, что в шаблоне Django уже передана переменная шаблона {{ user }}. обратитесь к соответствующему документу django-doc.