我有两个模型,有很多对很多的映射,现在,我有两个不同的对象Child_details:child_obj1和child_obj2。
class Child_details(models.Model):
name = models.CharField(max_length=200, default="")
gender = models.CharField(max_length=2, choices=GENDER_CHOICES)
dob = models.DateField(null=True, blank=True)
images_history = models.ManyToManyField(Image_history, blank=True)
class Image_history(models.Model):
image_type = models.CharField(max_length=100, blank=True, null=True, choices=PAGE_TYPES)
image_link = models.CharField(max_length=100, blank=True, null=True)
现在,我有两个不同的child_details对象: child_obj1和child_obj2。由于child_obj2是child_obj1的重复,我想删除这个对象,在删除之前,我必须将child_obj2的所有image_history引用到child_obj1。
for image in child_obj2.image_history.all():
image.child_details_id=child_obj1.id
#but, I can't do the above one because there is no child_details_id in image_history model
Django创建了第三个表,里面有child_details_id, image_history_id.我想在django创建的第三个表里修改child_details_id,以便进行许多到许多的映射,这样做对吗?
我明白了。基本上我所做的是迭代child_obj2的images_history,并在child_obj1的images_history中做条目。
for child_image_history in child_obj2.images_history.all():
image_history = Image_history(image_type=child_image_history.image_type, image_name=child_image_history.image_name)
image_history.save()
child_obj1.images_history.add(image_history)
child_image_history.delete()
并删除了child_obj2之前的条目,这是不需要的。