Как найти поля в другой таблице с тем же родителем (пользователем) с помощью шаблонов Django? - PullRequest
0 голосов
/ 11 июля 2011

Я довольно новичок в Django и Python. Я много читал и прочитал большинство руководств и документации.

Я создал простое приложение и застрял в точке, где в шаблоне я хочу иметь возможность получать поля из другой модели с тем же родителем. В этом случае у меня есть основной форум, с моделью Сообщение:

class Post(models.Model):
    ... 
    author = models.ForeignKey(User, related_name='forum_post_set')
    ...

Каждому сообщению присваивается Пользователь, который сделал это сообщение. Затем при отображении сообщений в теме я использую Django. поиск шаблона для доступа к полям из модели User:

{% for post in post_list %}
    ...
    Posted by {{ post.author.first_name }} {{ post.author.last_name }}
    ...
{% endfor %}

У меня также есть модель профиля, которая также подходит для пользователя:

class ZProfile(models.Model):
    user = models.ForeignKey(User, unique=True)
    extra_info = models.TextField(max_length=500, blank=True)

Итак, мой вопрос: как мне получить поле «extra_info» в шаблоне моих сообщений, используя автора («пользователь») для ссылки на пользователя в модели профиля. Я пробовал такие вещи:

{{ post.author.extra_info }}
{{ post.author.zprofile.extra_info }}
{{ post.author.user.zprofile.extra_info }}

и т. Д. И т. Д.

Я что-то здесь упускаю? Я, очевидно, делаю что-то не так или пропускаю шаг, но я не могу найти ответы на свои вопросы в документации.

Любая помощь очень ценится!

1 Ответ

2 голосов
/ 11 июля 2011

Поскольку ZProfile имеет значение от ForeignKey до User, доступ к нему осуществляется с User с использованием .zprofile_set.0 (даже если вы указали unique=True). Вам было бы лучше использовать OneToOneField - тогда вы могли бы использовать poll.author.zprofile.extra_info.

Приложение авторизации Django поддерживает профили пользователей, в которых хранится дополнительная информация о пользователях . Если вы используете OneToOneField, вы можете «зарегистрировать» свой класс ZProfile, используя настройку AUTH_MODULE_PROFILE, а затем использовать post.author.get_profile.extra_info

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