From 0af3822dc362b6253bda1c9699466dd0bbbf6066 Mon Sep 17 00:00:00 2001
From: Tim Graham <timograham@gmail.com>
Date: Sat, 14 Feb 2015 08:01:37 -0500
Subject: [PATCH] Fixed #24325 -- Documented change in ModelForm.save() foreign
 key access.

---
 docs/releases/1.8.txt  | 22 ++++++++++++++++++++++
 docs/spelling_wordlist |  1 +
 2 files changed, 23 insertions(+)

diff --git a/docs/releases/1.8.txt b/docs/releases/1.8.txt
index 4c7076a51e..b3dd2f6381 100644
--- a/docs/releases/1.8.txt
+++ b/docs/releases/1.8.txt
@@ -711,6 +711,28 @@ Now, an error will be raised to prevent data loss::
     ...
     ValueError: Cannot assign "<Author: John>": "Author" instance isn't saved in the database.
 
+Accessing foreign keys in ``ModelForm.save()``
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+In older versions, you could access unsaved foreign key objects in
+``ModelForm.save()`` when adding new objects. For example, given ``Book`` with
+a ``ForeignKey`` to ``Author``::
+
+    class BookForm(forms.ModelForm):
+        def save(self, *args, **kwargs):
+            book = super(BookForm, self).save(*args, **kwargs)
+            book.title = "%s by %s" % (book.title, book.author.name)
+            return book
+
+Now if the related instance hasn't been saved (for example, when adding an
+author and some inlined books in the admin), accessing the foreign key
+``book.author`` in the example) will raise ``RelatedObjectDoesNotExist``. This
+change was necessary to avoid assigning unsaved objects to relations (as
+described in the previous section).
+
+To adapt the example above, you could replace ``book.author.name`` with
+``self.cleaned_data['author'].name``.
+
 Management commands that only accept positional arguments
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
diff --git a/docs/spelling_wordlist b/docs/spelling_wordlist
index 19c72fc543..cea6650b1c 100644
--- a/docs/spelling_wordlist
+++ b/docs/spelling_wordlist
@@ -293,6 +293,7 @@ ing
 ini
 init
 inline
+inlined
 inlines
 inspectdb
 Instagram