title: Django doesn't save OneToOne relation assigned before saving
body: <p>I have a model with a <code>OneToOne</code> field to itself:</p>
  
  <pre><code>class Préinscription(models.Model):
      plus_un = models.OneToOneField('self', on_delete=models.SET_NULL,
          null=True, default=None, related_name='+')
  </code></pre>
  
  <p>When I try to set this field on an instance, it doesn't work.</p>
  
  <p>In the following code, <code>pp</code> and <code>pp2</code> are two instances of <code>Préinscription</code>.</p>
  
  <pre><code>if d['plus_un']:
      pp2.nom = d['nom2']
      pp2.prénom = d['prénom2']
      pp2.mél = d['mél2']
      pp.plus_un = pp2
      pp2.save()
      print(pp2)                 # First print
      p.nb_billets = 2
  else:
      pp.plus_un = None
      if pp2.id:
          pp2.delete()
      p.nb_billets = 1
  
  p.save()
  print(pp2)                     # Second print
  print(pp.plus_un)              # Third print
  pp.save()
  print(pp.plus_un)              # Final print
  </code></pre>
  
  <p>This code gives no errors. However, here is the sequence returned by the prints:</p>
  
  <pre><code>Préinscription object (325)
  Préinscription object (325)
  Préinscription object (325)
  None
  </code></pre>
  
  <p>This means that even though the related object is created and all, it isn't saved.</p>
  
  <p>As you can see, I suspected it might be because of a conflict between the <code>.plus_un</code> leading to the parent or the child, and so I set <code>related_name='+'</code> to avoid that. It does not change anything though, exactly the same results in either case, after migrating.</p>
  
  <p>Note that it does however work when I do it through the CLI (<code>./manage.py shell</code>), with the exact same procedure.</p>