Django批量创建具有多个必填字段的模型

Django批量创建具有多个必填字段的模型,django,django-models,Django,Django Models,我有一个Person模型、一个Demographic模型和一个PersonDemographic模型,其中包含使用两个模型中的数据的详细方法,并将一些非常昂贵的计算保存为特定Person-Demographic实例的字段。如何使用批量创建来方便输入我的PersonDemographic模型 class Person(models.Model): name = models.CharField(max_length=254) details = a bunch of fields

我有一个
Person
模型、一个
Demographic
模型和一个
PersonDemographic
模型,其中包含使用两个模型中的数据的详细方法,并将一些非常昂贵的计算保存为特定Person-Demographic实例的字段。如何使用批量创建来方便输入我的
PersonDemographic
模型

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               
那么,如何使用
PersonDemographic.objects.bulk\u create([])
来创建大型查询集,例如
Person.object.some\u query\u set()
与单个人口统计实例相匹配,例如
demographic=demographic.objects.get(id=7)
?换言之,它取代了:

demographic = Demographic.objects.get(id=7)
for person in Person.objects.some_query_set():
    pg = PersonDemographic.objects.create(person=person, demographic=demographic)
    pg.save()

您可以这样做:

demographic = Demographic.objects.get(id=7)
PersonDemographic.objects.bulk_create(
    [PersonDemographic(person=person, demographic=demographic) for person in Person.objects.some_query_set()]
)