TD
instance.save()
new = []
for item in items:
new.append(SubModel.objects.update_or_create(
name=value,
)[0])
instance.field.set(new)
Но что, если попоробовать напрямую
instance.field.update_or_create(...)
?set
пытается удалить старые инстансы связанные, если они переданы не были в аргументах, может, с этим связана ошибка.