If you want a completely clean start, you're gonna wanna drop the DB. Which means then to recreate it, add privileges, re-generate all the migrations, re-run them and create a superuser.
Good news is that you can easily make all this into a single/few line commands.
Fresh migration files
If you delete the whole folders, you're gonna have to run the makemigrations command mentioning all the app names. That's a hassle if you do this often. To have Django see the apps that need migrations, you'll wanna keep the migrations folder and the __init__.py inside them.
Here's a bash command for that:
find . -path "*migrations*" -not -regex ".*__init__.py" -a -not -regex ".*migrations" | xargs rm -rf
Then the usual (this should create migrations for all the apps that had migrations before):
python manage.py makemigrations
Resetting the DB
For SQLite just delete the DB file.
For PostgreSQL run this in the console:
psql -c "drop database <db_name>;"
psql -c "create database <db_name>;"
psql -c "grant all on database <db_name> to <db_user>;"
And then finally re-run migrations with
python manage.py migrate
Superuser
You're gonna obviously be missing a superuser, so you might wanna also do:
python manage.py createsuperuser
No-input way of doing that is piping python code into the shell:
echo "from django.contrib.auth import get_user_model; User = get_user_model(); User.objects.create_superuser('admin', 'badmin@myproject.com', 'pa$$w0rd')" | python manage.py shell
Generally speaking about these very common actions - Do yourself a favour and write a bit of bash. It has saved me many, many accumulated hours over the years of working with not only Django. Because even better than a oneline command is having a whole utility file to store more of these handy functions. Then you can just run something like:
django --reset_migrations
db --reset <my_db>
django --migrate
Or even aggregate that into a single line if you find yourself repeating the same few actions. Add this to your bashprofile
reset_django() {
    find . -path "*migrations*" -not -regex ".*__init__.py" -a -not -regex ".*migrations" | xargs rm -rf
    python manage.py makemigrations
    psql -c "drop database <db_name>;"
    psql -c "create database <db_name>;"
    psql -c "grant all on database <db_name> to <db_user>;"
    python manage.py migrate
    echo "from django.contrib.auth import get_user_model; User = get_user_model(); User.objects.create_superuser('admin', 'badmin@myproject.com', 'pa$$w0rd')" | python manage.py shell
}
My Django lite utilities for inspiration:
#!/bin/bash
django() {
    project_name=$(basename $PWD)
    project_path="$PWD"
    manage_path="${project_path}/${project_name}/manage.py"
    if [ ! -f $manage_path ] ; then  # No project/manage.py
        echo "Error: Could not locate Django manage.py file."
        return -1
    fi
    if [ $# -eq 0 ] ; then
        echo "Django project detected."
    fi
    while [ ! $# -eq 0 ]
        do
            case "$1" in
                --help | -h)
                        echo "Django shortcut, unknown commands are forwarded to manage.py"
                        echo "  -c, --check         Run Django manage.py check."
                        echo "  --req           Install requirements."
                        echo "  -r, --run           Run server."
                        echo "  -s, --shell         Run Django shell plus."
                        echo "  -sd, --shell            Run Django shell plus. Debug DB (print sql)"
                        echo ""
                    ;;
                --check | -c)
                        python $manage_path check
                    ;;
                --shell | -s)
                        python $manage_path shell_plus --bpython
                    ;;
                --shell | -sd)
                        python $manage_path shell_plus --bpython --print-sql
                    ;;
                --run | -r)
                        python $manage_path runserver
                    ;;
                --req)
                        pip install -r $project_path/requirements.txt
                    ;;
                --mig | -m)
                        python $manage_path makemigrations
                        python $manage_path migrate
                    ;;
                --reset_migrations)
                        find . -path "*migrations*" -not -regex ".*__init__.py" -a -not -regex ".*migrations" | xargs rm -rf
                        python $manage_path makemigrations
                        ;;
                *)
                    python $manage_path "$@"
                    ;;
            esac
            shift
        done
}