title: Django bulk create for models with multiple required fields
body: <p>I have a <code>Person</code> model, a <code>Demographic</code> model, and a <code>PersonDemographic</code> model which contains detailed methods using data from both models, and saves some very expensive calculations as a field for specific person-demographic instances. How do I use bulk create to facilitate entries into my <code>PersonDemographic</code> model?</p>
  
  <pre><code>class Person(models.Model):
      name = models.CharField(max_length=254)
      details = a bunch of fields ...
  
  class Demographic(models.Model):
      name = models.CharField(max_length=254)
      details = a bunch of fields ...
  
  class PersonDemographic(models.Model):
      person = models.ForeignKey(Person)
      demographic = models.ForeignKey(Demographic)
      expense_calc_property = models.FloatField(null=True)
  
      @property
      def random_property(self):
          calc using person/demographic details
  
      @property
      def expense_calc(self):
          if not expensive_calc_property:
             self.expensive_calc_property = results from expensive calc
             self.save()
          return self.expensive_calc_property               
  </code></pre>
  
  <p>So how do I use <code>PersonDemographic.objects.bulk_create([])</code> for a large query set, such as <code>Person.object.some_query_set()</code> matched up with a single demographic instance, say <code>demographic = Demographic.objects.get(id=7)</code>? In other words, something which replaces:</p>
  
  <pre><code>demographic = Demographic.objects.get(id=7)
  for person in Person.objects.some_query_set():
      pg = PersonDemographic.objects.create(person=person, demographic=demographic)
      pg.save()
  </code></pre>