How can I add new models and do migrations without restarting the server manually?
In the Django documentation, I found SchemaEditor, which is exactly what you want. Using the SchemaEditor, you can create Models, delete Models, add fields, delete fields etc..
Here's an excerpt:

Django’s migration system is split into two parts; the logic for
  calculating and storing what operations should be run
  (django.db.migrations), and the database abstraction layer that turns
  things like “create a model” or “delete a field” into SQL - which is
  the job of the SchemaEditor.
For the app I'm building I need to be able to create a new data model in models.py as fast as possible automatically. 
I created a way to do this by making a seperate python program that opens models.py, edits it, closes it, and does server migrations automatically but there must be a better way.
edit: my method works on my local server but not on pythonanywhere