Обновить идентификаторы для сопоставления "многие ко многим" django - PullRequest
0 голосов
/ 27 мая 2020

У меня есть две модели с отображением многие ко многим:

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, я хотел удалить этот объект, и прежде чем сделать это, я должен связать все image_history child_obj2 с 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. Я хотел изменить child_details_id в третьей таблице, созданной django для отображения многие ко многим. Правильно ли это делать, и если да, то как я могу?

1 Ответ

0 голосов
/ 27 мая 2020

Я понял. В основном то, что я сделал, - это итерация с помощью images_history child_obj2 и внесение записей в image_history child_obj1.

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, которые не требуются.

...