diff --git a/interface.go b/interface.go
index 593777b..ec8ddf3 100644
--- a/interface.go
+++ b/interface.go
@@ -41,8 +41,10 @@ func GetCollectionName(m ModelInterface) string {
 
 // PrepareInsert creates new bson id and insert time
 func (m *Model) PrepareInsert() {
-	id := bson.NewObjectId()
-	m.ID = &id
+	if m.ID == nil {
+		id := bson.NewObjectId()
+		m.ID = &id
+	}
 	now := time.Now()
 	m.InsertTime = &now
 	m.UpdateTime = &now