why does date time function don't need migration when I set it to default?
just change default=datetime.now() to default=datetime.now
Now I really think, you meant why there is always a new migrations for this model ?
It is beacuse you are changing the model structure by doing 

default=datetime.now() this, actually calls the function whenever
  this line is read,

whereas what you want to do is : 

default=datetime.now this will be called when a new instance is
  created.
In Django when I set my date/time to default 
 default=datetime.now()
It automatically migrated in models.py. Why I do not need to do migration for it?