У меня очень новый вопрос по использованию аутентификации django.Вот моя модель:
class UserProfile(models.Model):
""" Main user profile used on a website """
user = models.ForeignKey(User, unique=True) # reference to built in django user
display_name = models.CharField(max_length=100, blank=True)
# and several more fields
class Post(models.Model):
""" Blog entry """
author = models.ForeignKey(User)
tags = models.ManyToManyField(Tag)
title = models.CharField(max_length=255)
text = models.TextField()
Проблема возникает, когда я хочу вывести список сообщений:
#view
posts = Post.objects.all()
#template
{% for post in posts %}
{{ post.title }} by {{ post.author.get_profile.display_name }}
{% endfor %}
Для 100 сообщений это дает 101 запрос, потому что каждый get_profile()
идетв базу данных, чтобы получить поле display_name
.
Есть ли способ исправить это?Могу ли я использовать select_related()
или что-то еще?Или я должен ссылаться UserProfile
вместо User
в моей Post
модели?