Django массовое добавление многий ко многим
Есть 2 модели
class Image(models.Model):
image_path = models.CharField("image path", max_length=300, unique=True)
image_name = models.CharField("image name", max_length=30)
tags = models.ManyToManyField("Tag", verbose_name=("tags"))
class Tag(models.Model):
tag = models.CharField("tag", max_length=20, unique=True)
Обе заполняются через bulk_create. Надо массово связать Image и Tag.
Что-то типа этого:
for tag in Tag.objects.all():
Image.objects.filter(image_path__contains=os.sep + tag.tag + os.sep).update(tags=tag)
При этом если изображение уже имеет связь с тегом повторно её создавать не надо. Как это сделать?
Ответы (1 шт):
Автор решения: DenisMaslennikov
→ Ссылка
Сам спросил сам ответил =)
for tag in Tag.objects.all():
tag.image_set.add(*Image.objects.filter(image_path__contains=os.sep + tag.tag + os.sep))
Дубли при этом не создаются.