Django modele, Relacje między modelami - 101:

101. Jaki jest Use Case dla 'related_name' w polu (modelu) ForeignKey?

  • Gdy chcemy łatwo uzyskać dostęp do obiektów powiązanych w relacji One-to-Many:

  • Załóżmy, że w modelu Post mamy definicję pola 'author':
  • author = models.ForeignKey(User, on_delete=models.CASCADE, related_name="blog_posts")
  • Wtedy, możemy uzyskać wszystkie posty danego autora bezpośrednio, używając:
  • first_user = User.objects.first()
    posts_written_by_first_user = first_user.blog_posts.all()
  • Tak więc 'blog_posts' (related_name) działa jak odwrotna relacja, umożliwiając dostęp do wszystkich powiązanych postów użytkownika.
  • Bez related_name musielibyśmy korzystać z domyślnej nazwy (np. post_set), co mogłoby być mniej czytelne.