“Models aren't loaded yet” error while populating in Django 1.8 or later

后端 未结 3 1895
一生所求
一生所求 2020-12-08 18:52

I am using this code to populate my database:

import os
def populate():
    python_cat = add_cat(\'Python\')

    add_page(cat=python_cat, 
    title=\"Offic         


        
相关标签:
3条回答
  • 2020-12-08 19:36

    We were getting this error. Our project started with Django 1.4, we went to 1.5 and then to 1.7. Our wsgi.py looked like this:

    import os
    import sys
    
    from django.core.handlers.wsgi import WSGIHandler
    
    os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings'
    application = WSGIHandler()
    

    When I updated to the 1.7 style WSGI handler:

    import os
    import sys
    
    from django.core.wsgi import get_wsgi_application
    
    os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings'
    application = get_wsgi_application()
    

    Everything works now.

    0 讨论(0)
  • I had the same exception with Django 1.7rc2. The solution was to add these lines at the beginning of my program:

    import django
    django.setup()
    

    Update: This is now documented for Django 1.8.

    0 讨论(0)
  • 2020-12-08 19:45

    well for django 1.9.x :

    populate_rango.py:

    import os
    import sys
    
    from django.core.wsgi import get_wsgi_application
    
    os.environ['DJANGO_SETTINGS_MODULE'] = 'tango_with_django_project.settings'
    application = get_wsgi_application()
    
    def populate():
        python_cat = add_cat('Python')
    
        add_page(cat=python_cat,
             title="Official Python Tutorial",
             url="http://docs.python.org/2/tutorial/")
    
        add_page(cat=python_cat,
            title="How to Think like a Computer Scientist",
            url="http://www.greenteapress.com/thinkpython/")
    
        add_page(cat=python_cat,
            title="Learn Python in 10 Minutes",
            url="http://www.korokithakis.net/tutorials/python/")
    
        django_cat = add_cat("Django")
    
        add_page(cat=django_cat,
            title="Official Django Tutorial",
            url="https://docs.djangoproject.com/en/1.5/intro/tutorial01/")
    
        add_page(cat=django_cat,
            title="Django Rocks",
            url="http://www.djangorocks.com/")
    
        add_page(cat=django_cat,
            title="How to Tango with Django",
            url="http://www.tangowithdjango.com/")
    
        frame_cat = add_cat("Other Frameworks")
    
        add_page(cat=frame_cat,
            title="Bottle",
            url="http://bottlepy.org/docs/dev/")
    
        add_page(cat=frame_cat,
            title="Flask",
            url="http://flask.pocoo.org")
    
        #Print out what we have added to the user.
        for c in Category.objects.all():
            for p in Page.objects.filter(category=c):
                print ("- {0} - {1}".format(str(c), str(p)))
    
    def add_page(cat, title, url, views=0):
        p = Page.objects.get_or_create(category=cat, title=title, url=url, views=views)[0]
        return p
    
    def add_cat(name):
        c = Category.objects.get_or_create(name=name)[0]
        return c
    
    # Start execution here!
    if __name__ == '__main__':
        print ("Starting Rango population script...")
        os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'tango_with_django_project.settings')
        from rango.models import Category, Page
        populate()
    
    0 讨论(0)
提交回复
热议问题