Создается список словесных имен полей для перебора в шаблоне Django, но ничего не отрисовывается

Я создаю страницу профиля для веб-приложения. Я отображаю профиль пользователя, который является экземпляром моей модели профиля, подобранной на основе Users pk. В html я хочу, чтобы это отображалось следующим образом:

verbose_field_name: field_value

Или, например:

First Name: John
Surname: Lewis

Я сделал так, что он отображал фактическое имя поля, например:

first_name: John
surname: Lewis

Что сработало, однако, как только я попытался добавить и перебрать имена полей, это не сработало.

Моя модель:

class Profile(models.Model): # Get access to create profile by default
    MALE = 'M'
    FEMALE = 'F'
    OTHER = 'O'
    UNSPECIFIED = "U"
    GENDER_CHOICES = [
        (MALE, 'Male'),
        (FEMALE, 'Female'), 
        (OTHER, 'Other'),
        (UNSPECIFIED, 'Prefer not to say'),
    ]

    user = models.OneToOneField(User, on_delete=models.CASCADE)
    phone_number = models.CharField(verbose_name='Mobile Phone Number', max_length=20)
    bio = models.TextField(verbose_name='Bio', max_length=500, blank=True, null=True)
#    profile_image = models.ImageField(blank=True, null=True)
    date_of_birth = models.DateField(verbose_name='Date of Birth', blank=True, null=True)
    first_name = models.CharField(verbose_name='First Name', max_length=255, blank=True, null=True)
    surname = models.CharField(verbose_name='Surname', max_length=255, blank=True, null=True)
    gender = models.CharField(verbose_name='Gender', max_length=255, choices=GENDER_CHOICES, blank=True, null=True)
    emergency_contact_name = models.CharField(verbose_name='Emergency Contact Name', max_length=255, blank=True, null=True)
    emergency_contact_number = models.CharField(verbose_name='Emergency Contact Number', max_length=20, blank=True, null=True)
    business = models.ForeignKey(BusinessProfile, null=True, blank=True, on_delete=models.SET_NULL) # This may need to change.
    creation_date = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return str(self.user)

Мое мнение:

class ShowProfileView(DetailView):
    model = Profile
    template_name = 'profiles/user_profile.html'



    def get_context_data(self, *args, **kwargs):
        context = super(ShowProfileView, self).get_context_data(*args, **kwargs) # super gives access to parent class methods
        user_profile = get_object_or_404(Profile, id=self.kwargs['pk']) 
        context["user_profile"] = user_profile
        return context

    def get_object(self, *args, **kwargs):
        obj = Profile.objects.filter(id=self.kwargs['pk']).values('first_name', 'surname', 'date_of_birth', 'phone_number', 'bio', 'gender', 'emergency_contact_name', 'emergency_contact_number') # list of dictionaries
        object = obj[0]
        return object

    def get_verbose_field_names(self):
        verbose_field_names = [
            Profile._meta.get_field('first_name').verbose_name,
            Profile._meta.get_field('surname').verbose_name,
            Profile._meta.get_field('date_of_birth').verbose_name,
            Profile._meta.get_field('phone_number').verbose_name,
            Profile._meta.get_field('bio').verbose_name,
            Profile._meta.get_field('gender').verbose_name,
            Profile._meta.get_field('emergency_contact_name').verbose_name,
            Profile._meta.get_field('emergency_contact_number').verbose_name,
        ]
        return verbose_field_names

Мой шаблон:

{% extends "base.html" %}

{% block content %}

    <h1>Profile</h1>
    <br/><br/>
    {% csrf_token %}
    <ul>
    {% for v in object.values %}
    {% for field in verbose_field_names %}
    <p>{{ field }}: {{ v }} </p>
    {% endfor %}
    {% endfor %}
    </ul>
    <a href='{% url "profiles:edit_profile" pk=user.profile.id %}'>Edit Profile</a>


{% endblock %}

Я действительно просто не могу понять, почему он не отображается с добавлением нового метода "get_verbose_fields_name()".

Вернуться на верх