You'll still need to install a configuration file somewhere - and you may not want to drop it inside the venv itself. Nothing really wrong with it though.
This is what I do, roughly:
- netbox release is extracted to /srv/netbox/releases/netbox-$VER
- venv is created at /srv/netbox/releases/netbox-$VER/venv
- /srv/netbox/current is symlinked to /srv/netbox/releases/netbox-$VER
- config is stored at /srv/netbox/shared/configuration.py and then symlinked to /srv/netbox/current/netbox/netbox/configuration.py
- configuration.py points to /srv/netbox/shared/media and /srv/netbox/shared/reports so they're kept on upgrade (important):
MEDIA_ROOT = "/srv/netbox/shared/media"
REPORTS_ROOT = "/srv/netbox/shared/reports"
uwsgi (or gunicorn if you prefer) then just serves out of /srv/netbox/current and static files can be picked up from there too.