title: Atomic transaction on django queryset.update(**kwargs)
body: <p>It seems <code>Django</code>'s <code>queryset.update</code> method execute under <code>transaction.atomic</code> context manager. When would I need to do that explicitly in my code during <code>update</code>? Or what will be the benefits doing it, or problems not doing it?</p>
  
  <h2>Code</h2>
  
  <pre><code>try:
      queryset = Model.objects.filter(a=1)
      if queryset.count():
          with transaction.atomic():
              queryset.update(a=2) # queryset will [] after this.
              for item in queryset: 
                  item.emit_event('Updated')
  except:
      logger.info('Exception')
  </code></pre>
  
  <p>My question is do I really need to have <code>transaction.atomic():</code> here? </p>
  
  <p>Secondly, after <code>.update</code> my queryset gets empty because its a filtered queryset. how to retain the values in my case as I want to emit an event on the individual objects.</p>