Django Standalone Script
Question: I am trying to access my Django (v1.10) app DB from another python script and
having some trouble doing so.

This is my file and folder structure:

    
    
    store
     store
       __init.py__
       settings.py
       urls.py
       wsgi.py
     store_app
       __init.py__
       admin.py
       apps.py
       models.py
       ...
     db.sqlite3
     manage.py
    
    other_script.py
    

In accordance with [Django's
documentations](https://docs.djangoproject.com/en/1.10/topics/settings/#calling-
django-setup-is-required-for-standalone-django-usage) my `other_script.py`
looks like this:

    
    
    import django
    from django.conf import settings
    
    settings.configure(DEBUG=True)
    django.setup()
    
    from store.store_app.models import MyModel
    

But it generates a runtime error:

    
    
    RunTimeError: Model class store.store_app.models.MyModel doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
    

I should note that my `INSTALLED_APPS` list contains `store_app` as its last
element.

If instead I try to pass a config like this:

    
    
    import django
    from django.conf import settings
    from store.store_app.apps import StoreAppConfig
    
    settings.configure(StoreAppConfig, DEBUG=True)
    django.setup()
    
    from store.store_app.models import MyModel
    

I get:

    
    
    AttributeError: type object 'StoreAppConfig has no attribute  'LOGGING_CONFIG'.
    

If I edit `settings.py` and add `LOGGING_CONFIG=None` I get another error
about another missing attribute, and so on.

Any suggestions will be appreciated.


Answer: This sounds like a great use case for [Django Management
commands.](https://docs.djangoproject.com/en/1.10/howto/custom-management-
commands/) which has the added bonus you can run it scheduled from cron,
direct from the commandline, or call from inside django. This gives the script
full access to the same settings and environment variables as your main
project.

If you move this into an appropriate directory - using store here as an
example, not a suggestion, it should work.

    
    
    store 
        management 
            __init__.py 
            otherscript.py 
    

