Django получает данные из базы данных с помощью внешнего ключа

Я работаю над приложением для блога на django и хочу получить доступ ко всем полям базы данных через внешний ключ другой базы данных .

class User(AbstractUser):
    about_user = models.TextField(("Profile"),blank = True)

    def __str__(self):
        return self.username
    

class Post(models.Model):
    author = models.ForeignKey("account.User",on_delete=models.CASCADE)
    status = models.BooleanField(("Status"),default = False)

Теперь я хочу получить доступ ко всем данным базы данных пользователя из сообщения, что-то вроде

posts = Post.objects.filter(status = True)
posts.author.about_author
или
user = User.objects.filter(username = post.author)
> user.about_author

что я пытаюсь сделать здесь в моем шаблоне все содержимое поста будет отображаться и после этого я хочу, чтобы about_author (тот, кто написал пост). вроде того, как stackoverflow показывает каждый вопрос.

Заранее спасибо и любой совет будет очень признателен.

Вы получаете Postс помощью:

posts = Post.objects.filter(status=True)

но не имеет смысла писать:

posts.author

поскольку posts является QuerySet (поэтому коллекцией) Post, а не единицей.

Вы можете перечислить posts и затем показать .author для всех Post объектов:

for post in posts:
    print(post.author.about_user)

или в шаблоне с:

{% for post in posts %}
    {{ post.author.about_user }}
{% endfor %}

Вы можете повысить эффективность, извлекая все User в одном запросе с помощью:

posts = Post.objects.filter(status=True).select_related('author')
Вернуться на верх