我有以下查看代码:
n = Nutrients.objects.all()
for q in n:
q.save()
Nutrition_Data.objects.create(food = l, nutrients = q)
Nutrition_Data是一个中间表。
在食物中我保存了来自request.Post数据的ID。 有没有更好的方法将Queryset(在n中)保存到中间表中?
答案 0 :(得分:0)
是的,你可以更有效地做到这一点(需要Django> = 1.4):
n = Nutrients.objects.all()
to_save = []
for q in n:
# q.save() absolute since you just queried the database so no need to save it again
nutrient_data = Nutrition_Data(food=l,
nutrients_id=q.pk)
to_save.append(nutrient_data)
Nutrition_Data.objects.bulk_create(to_save)
答案 1 :(得分:0)
您应该将食物和营养素之间的关系定义为ManyToManyField。然后,您可以一次创建数据:
n = Nutrients.objects.all()
l.nutrients.add(*n)
请注意,您可以将Nutrients_Data
设置为关系中的through
表,但如果除了食物和营养素ForeignKeys之外,该表上没有其他字段,那就没有意义了。