Failing to configure Django correctlly (conflict in settings between models.py and manage.py usage).

30 views
Skip to first unread message

alex Tarasiuk

unread,
Jan 5, 2018, 7:25:47 AM1/5/18
to Django users
Hi, I'm new to Django and having some trouble to configure it.
I'm using Django 1.11.9 (1.11.5 at first but then upgraded with hopes it will solve the issue) and Python 2.7.12 from virtualenv.

Here is my project structure (Please pay attention to upper/lower case letters - it is intentionally):

<my project>:

module 1

module 2

...

...

MY_DJANGO:

MY_DJANGO:

            __init__.py

            settings.py

            urls.py

wsgi.py

my_django:

            migrations

            __init__.py

            admin.py

            apps.py

            models.py

            tests.py

            views.py

__init__.py

manage.py

 
in models.py I've added:
import os
import django
os.environ["DJANGO_SETTINGS_MODULE"] = "MY_DJANGO.MY_DJANGO.settings"
django.setup()
before the models import from django.db.

in manage.py, in the main
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "MY_DJANGO.settings")
was auto generated by Django 

in settings.py, in INSTALLED_APPS:
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sites',
    'django.contrib.admindocs',
    ======>>>>'MY_DJANGO.my_django', or 'my_django', <<<<===== Here is the problem
]

Problem description:
if I use 'MY_DJANGO.my_django' in INSTALLED_APPS then running 'python manage.py check' command yields:
 ImportError: No module named MY_DJANGO.settings


 
and if I use 'my_django' in INSTALLED_APPS then I have an import error while importing models:
 from MY_DJANGO.my_django import models (in some file) yields:
ImportError: No module named my_django 

Also tried to add  ''my_django.apps.MyDjangoConfig' to INSTALLED_APPS, and it didn't helped.

What am I doing wrong??

Thanks in advance,
Alex.
 





 

Andréas Kühne

unread,
Jan 5, 2018, 8:59:31 AM1/5/18
to django...@googlegroups.com
Hi Alex,

You shouldn't have anything regarding the settings in models.py.

Remove:
import os
import django
os.environ["DJANGO_SETTINGS_MODULE"] = "MY_DJANGO.MY_DJANGO.settings"
django.setup()

from your models.py file. You should never have any settings in the models.py file at all. Also, you should never reference the django project folder (your first MY_DJANGO here) in the project. It always has that folder anyway.

In settings.py, your INSTALLED_APPS should look like this:
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.sites',
    'django.contrib.admindocs',
    'my_django',
]


Everything should then work as expected.

Regards,

Andréas

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/bb9251bb-7bce-4eec-b8ac-90b031db1284%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Ramiro Morales

unread,
Jan 5, 2018, 9:04:49 AM1/5/18
to django...@googlegroups.com
You describe the problem you are seeing but don't tell why you are setting things up .

What are you trying to achieve with things like this:

in models.py I've added:
import os
import django
os.environ["DJANGO_SETTINGS_MODULE"] = "MY_DJANGO.MY_DJANGO.settings"
django.setup()
before the models import from django.db.

or

in settings.py, in INSTALLED_APPS:
INSTALLED_APPS = [
    ...
    ======>>>>'MY_DJANGO.my_django', or 'my_django', <<<<===== Here is the problem
]

Also tried to add  ''my_django.apps.MyDjangoConfig' to INSTALLED_APPS, and it didn't helped.

All of this is very unconventional.

If you are starting with Django you should refrain from doing weird things. Django currently does no magic outside the Python import system so there is no need to over complicate.

TBH No upgrade of Django is going to help you the mess you currently have.


--
Ramiro Morales
@ramiromorales

alex Tarasiuk

unread,
Jan 5, 2018, 9:17:20 AM1/5/18
to Django users
Hi Andréas,
Thanks for your response.

When I'm removing the lines you've talked about I'm having the following error:

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

This is why I've added those settings in the first place.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.

Andréas Kühne

unread,
Jan 5, 2018, 9:29:11 AM1/5/18
to django...@googlegroups.com
Ok,

So are you in the folder where the manage.py file resides when you run your commands? You have to be in that directory when running manage.py commands.

Also - as long as you haven't done too much already - I would recommend starting fresh and looking into the tutorials in the django docs pages on how to start a project. See https://docs.djangoproject.com/en/2.0/intro/tutorial01/ or https://tutorial.djangogirls.org/en/.

The settings you have changed there are very strange (as Ramiro pointed out) and should definitely not be required. Have you set the DEFAULT_INDEX_TABLESPACE setting anywhere? Because that is also something that shouldn't be required....

Med vänliga hälsningar,

Andréas

To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.

To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.

alex Tarasiuk

unread,
Jan 5, 2018, 9:50:17 AM1/5/18
to Django users
Here is what I've done so far (it is a new project and I did followed the tutorial until it didn't worked for me any more).

Here are the steps of how I created the project:

1. django-admin startproject MY_DGANGO

2.  python manage.py startapp my_django

3.  edited the models.py

4. python manage.py makemigrations my_django

5. python manage.py sqlmigrate my_django 0001

6.  python manage.py migrate

 

Now after the tables in the DB was created, I want to use it (add/remove/update date) from my project.


7.  So from my project I’m importing models so I’ll be able to use the classes I’ve created to extract and add information to/from the DB.

For example:

·         In models.py:

Class Person(models.Model):

            first_name = models.CharField(max_length=100, null=False)

            last_name = models.CharField(max_length=100, null=False)

            phone_number = models.CharField(max_length=100, null=False)

            …

 

·         In some file in my project:

from MY_DGANGO.my_django import models

….

def add_person(first_name, last_name, phone_number):

person = models.Person(first_name= first_name, last_name= last_name,

                                    phone_number= phone_number)

person.save()

def get_person_by_phone_number(phone_number):

person = models.Person.objects.filter(phone_number= phone_number)



P.S. I'm runnig it without starting any Django server.



Med vänliga hälsningar,

Andréas

Jani Tiainen

unread,
Jan 5, 2018, 10:04:42 AM1/5/18
to django...@googlegroups.com

Hi.

You probably want to create Django management command to ease up all settings and such.


Ei viruksia. www.avast.com

To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.

To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.

For more options, visit https://groups.google.com/d/optout.



--
Jani Tiainen

- Well planned is half done, and a half done has been sufficient before...

Andréas Kühne

unread,
Jan 5, 2018, 10:10:20 AM1/5/18
to django...@googlegroups.com
Ah, 

OK.

Now it is a bit more clear. 

What you are doing is not supported by django. You don't use the django models OUTSIDE of the django project. That is not a supported usecase. You can probably set it up, so that you CAN do that, but I would not recommend it.

What are you trying to accomplish by reading the models OUTSIDE of the django project?

Regards,

Andréas

To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.

To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.

alex Tarasiuk

unread,
Jan 5, 2018, 10:17:53 AM1/5/18
to Django users
The only thing I need from Django (at this point) is to have the ability to communicate with my DB.
(person = models.Person.objects.filter(phone_number= phone_number) from my previous example)
I'm planning to use the admin page and I might add a GUI in some point.

Regards,
Alex

Regards,

Andréas

Jani Tiainen

unread,
Jan 5, 2018, 10:22:41 AM1/5/18
to django...@googlegroups.com
Hi.

That is a bit misleading information.

It is completely supported using models (and other Django stuff) from standalone scripts wihtout using manage.py


And specially part:

And you don't even need settings.py file - that is purely optional as well.



For more options, visit https://groups.google.com/d/optout.



--

Jani Tiainen

unread,
Jan 5, 2018, 10:26:55 AM1/5/18
to django...@googlegroups.com
Hi,

As I did few posts already, you can do it few ways.

I would recommend using custom management command. It will wrap up things nicely under Django hood, you don't need to figure out how to apply settings and such which allows you just need to concentrate to make your code to work.

You can create standalone script as well, it just requires a bit more work since you would be responsible of making sure that you have setup Django properly.


To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.

To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.

For more options, visit https://groups.google.com/d/optout.



--

Andréas Kühne

unread,
Jan 5, 2018, 10:37:26 AM1/5/18
to django...@googlegroups.com
Yeah, OK, didn't know about that ability - have never used it :-)

Regards,

Andréas

Reply all
Reply to author
Forward
0 new messages