@Balundula

Как вывести связные модели в шаблон?

Есть расширенная модель пользователя Profile. Как мне вывести в таблицу html номер телефона? И как вывести в шаблон группу определенного пользователя?

models.py
from django.db import models
from django.contrib.auth.models import User

class Profile(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user')
    city = models.CharField(max_length=100, blank=True, null=True)
    site = models.CharField(max_length=100, blank=True, null=True)
    day_of_birth = models.DateTimeField(null=True, blank=True)
    phonenumber = models.CharField(max_length=35, blank=True, null=True)

    class Meta:
        db_table = 'Profile'


views.py
def moderation_page(request, pk):
    non_active_news = News.objects.order_by('-created').filter(status=3)
    non_verified_users = User.objects.filter(groups=5)
    profiles = Profile.objects.all()

    context = {
        'non_active_news': non_active_news,
        'non_verified_users': non_verified_users,
        'profiles': profiles,
    }
    return render(request, 'users/moderation.html', context)


html
<table class="non_ver_users-table">
        <thead class="non_ver_users-table-row thead">
            <td class="non_ver_users-table-item">Логин</td>
            <td class="non_ver_users-table-item">Дата создания</td>
            <td class="non_ver_users-table-item">Номер телефона</td>
            <td class="non_ver_users-table-item">E-mail</td>
            <td class="non_ver_users-table-item">Статус</td>
        </thead>

        <tbody class="non_ver_users-table-row"></tbody>

        {% for user in non_verified_users %}
                <tr>
                    <td class="non_ver_users-table-item">{{ user.username }}</td>
                    <td class="non_ver_users-table-item">{{ user.date_joined }}</td>
                    <td class="non_ver_users-table-item">{{ profile.user.phonenumber }}</td>
                    <td class="non_ver_users-table-item">{{ user.email }}</td>
                    <td class="non_ver_users-table-item">{{ }}</td>
                </tr>
        {% endfor %}
    </table>
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
@serhiops
Python/JavaScript/C++
1. То, что вы показали не является раширенной моделью пользователя. Вы создали отдельную модель и просто связали ее по первичному ключу с моделью User. Вот так выглядит разширенная модель пользователя:
models.py
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
    code = models.IntegerField(verbose_name="Код", blank=True, null=True)
    is_salesman = models.BooleanField(default = False, verbose_name="Продавец")
    age = models.IntegerField(verbose_name="Возраст", blank=True, null=True)
    number_of_phone =  models.CharField(max_length=13,verbose_name="Номер телефона", blank=True, null=True)
    city = models.CharField(max_length=64, verbose_name="Населенный пункт", blank=True, null=True)
    company = models.CharField(max_length=64, verbose_name="Компания", default="company name", blank=True, null=True)

settings.py
AUTH_USER_MODEL = 'your_app_name.CustomUser'
В так случае вы сможете обращаться к полям модели напрямую в шаблоне(как и обычно)
{{ user.number_of_phone }}
2. Если исходить от того, что вы имеете, то как выход я вижу передавание текущего профиля пользователя в шаблон через контект в вашем views.py:
...
profile = Profile.objects.get(user = request.user)
...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы