我正在使用Django 1.9,並且正在嘗試使用bulk_create創建許多新模型對象,並將它們與公共相關的many_to_many對象相關聯。Django在執行bulk_create時設置many_to_many對象
我的型號如下
#Computational Job object
class OT_job(models.Model):
is_complete = models.BooleanField()
is_submitted = models.BooleanField()
user_email = models.EmailField()
#Many sequences
class Seq(models.Model):
sequence=models.CharField(max_length=100)
ot_job = models.ManyToManyField(OT_job)
我有數以千計的被提交,並且必須與它們相關的作業相關的序列對象。以前我使用迭代器並將它們保存在for循環中。但在閱讀後意識到Django 1.9有bulk_create。
目前我做
DNASeqs_list = []
for a_seq in some_iterable_with_my_data:
# I create new model instances and add them to the list
DNASeqs_list.append(Seq(sequence=...,))
我現在想bulk_create這些序列,並將其與current_job_object關聯。
created_dnaseqs = Seq.objects.bulk_create(DNASeqs_list)
# How do I streamline this part below
for a_seq in created_dnaseqs:
# Had to call save here otherwise got an error
a_seq.save()
a_seq.ot_job.add(curr_job_obj)
我不得不打電話給「a_seq.save()」中的循環,因爲我在我做「a_seq.ot_job.add(curr_job_obj)」,這說
部分錯誤。 ...在使用這種多對多關係之前,需要有一個字段「seq」的值。
儘管閱讀other questions on this topic,我仍然感到困惑,因爲不像其他人,我沒有一個自定義的「通過」模型。我很困惑如何最好地將OT_Job與許多Seq關聯起來,並將最小命中數據庫與數據庫關聯起來。
感謝您的澄清。我錯過了文檔中的那一點。現在我也知道爲什麼一些BulkOverflow上的bulk_create示例在bulk_create後立即執行檢索。 – harijay