title: django update_or_create gets "duplicate key value violates unique constraint "
body: <p>Maybe I misunderstand the purpose of Django's update_or_create Model method.</p>
  
  <p>Here is my Model:</p>
  
  <pre><code>from django.db import models
  import datetime
  from vc.models import Cluster
  
  class Vmt(models.Model):
      added = models.DateField(default=datetime.date.today, blank=True, null=True)
      creation_time = models.TextField(blank=True, null=True)
      current_pm_active = models.TextField(blank=True, null=True)     
      current_pm_total = models.TextField(blank=True, null=True)
      ... more simple fields ...
      cluster = models.ForeignKey(Cluster, null=True)
  
  
      class Meta:
          unique_together = (("cluster", "added"),)
  </code></pre>
  
  <p>Here is my test:</p>
  
  <pre><code>from django.test import TestCase
  from .models import *
  from vc.models import Cluster
  from django.db import transaction
  
  
  # Create your tests here.
  class VmtModelTests(TestCase):
      def test_insert_into_VmtModel(self):
          count = Vmt.objects.count()
          self.assertEqual(count, 0)
  
          # create a Cluster
          c = Cluster.objects.create(name='test-cluster')
          Vmt.objects.create(
              cluster=c,
              creation_time='test creaetion time',
              current_pm_active=5,
              current_pm_total=5,
              ... more simple fields ...
          )
          count = Vmt.objects.count()
          self.assertEqual(count, 1)
          self.assertEqual('5', c.vmt_set.all()[0].current_pm_active)
  
          # let's test that we cannot add that same record again
          try:
              with transaction.atomic():
  
                  Vmt.objects.create(
                      cluster=c,
                      creation_time='test creaetion time',
                      current_pm_active=5,
                      current_pm_total=5,
                      ... more simple fields ...
                  )
                  self.fail(msg="Should violated integrity constraint!")
          except Exception as ex:
              template = "An exception of type {0} occurred. Arguments:\n{1!r}"
              message = template.format(type(ex).__name__, ex.args)
              self.assertEqual("An exception of type IntegrityError occurred.", message[:45])
  
          Vmt.objects.update_or_create(
              cluster=c,
              creation_time='test creaetion time',
              # notice we are updating current_pm_active to 6
              current_pm_active=6,
              current_pm_total=5,
              ... more simple fields ...
          )
          count = Vmt.objects.count()
          self.assertEqual(count, 1)
  </code></pre>
  
  <p>On the last update_or_create call I get this error:</p>
  
  <pre><code>IntegrityError: duplicate key value violates unique constraint "vmt_vmt_cluster_id_added_c2052322_uniq"
  DETAIL:  Key (cluster_id, added)=(1, 2018-06-18) already exists.
  </code></pre>
  
  <p>Why didn't wasn't the model updated? Why did Django try to create a new record that violated the unique constraint?</p>