장고에서 앱이 두 개 이상 있을 때 models.py를 앱별로 해당 앱의 하위 폴더에 분리하려고 하는데 어떻게 해야 할까요?
  1. pybo앱이 이미 있고, 장고 기본문서에 예제로 나와있는 polls 앱을 추가해서 만들고 있습니다.

  2. 현재 models.py 경로 (mysite>pybo>models.py)는 pybo 앱 하위에만 존재하고 있습니다. models.py 내용을 앱별로 구분하고 싶어서 polls앱의 models.py는 별도로 분리해서 만들고 싶습니다.

  3. 지금은 polls앱을 추가해서 models.py (mysite >polls>models.py)를 만든 다음 "python manage.py makemigrations polls" 를 실행하면 "No installed app with label 'polls'. 라고 뜨네요. (신기한 것은 "python manage.py makemigrations pybo"라고 해도 "No installed app with label 'pybo'. " 라고 뜹니다.)

    polls앱의 models.py 코드는 다음과 같습니다. (장고 문서에 있는 그대로입니다. 다만 클래스명 Question은 pybo 모델이랑 중복이라서 이름을 변경했습니다.)

from django.db import models


class Questionnaire(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField("date published")


class Choice(models.Model):
    question = models.ForeignKey(Questionnaire, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

  • mysite > config > setting > base.py 에서 다음과 같이 polls 앱을 추가했습니다.
INSTALLED_APPS = [
    'polls.apps.PollsConfig',
    'common.apps.CommonConfig',
    'pybo.apps.PyboConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]
  • 저는 점프투장고에서 설명하신 것처럼 templates 하위 폴더에 앱별로 템플릿을 구분하는 방식과 동일하게 models.py를 분리해서 관리하고 싶은데 어떻게 해야 할까요?

  • 예를 들어서 파이보는 mysite>models>pybo>models.py 로 관리하고

  • polls는 mysite>models>polls>models.py 로 관리하는 것입니다. (이렇게 하면 앱별로 models.py를 관리할 수 있어서 덜 헷갈릴거 같습니다)

  • 아니면 기존 pybo앱에서 하위 폴더를 만들고 다수의 models.py를 만드는 방법도 있을 수 있을거 같은데 어떤 방법이 좋은지도 모르겠습니다. (models.py를 여러개로 분리하는게 좋은 방법인지도 확신은 없습니다.)

  • 요약 : models.py를 앱별로 분리하고 싶은데 어떻게 해야 할지 몰라서 스승님께 질문드립니다.

  • 참고 (구글링을 해보니 앱이 한 개인 경우 다수의 models.py를 추가하는 방식은 찾았습니다. 참고링크

  • 참고로 터미널에서 django-admin check 명령어를 실행하면 "django.core.exceptions.ImproperlyConfigured: Requested setting LANGUAGES, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings." 라는 오류메시지가 뜨는데 이 오류 의미를 잘 모르겠습니다.

hello_world 474

M 2023년 6월 29일 2:35 오전

+1 점프 투 장고에는 이미 pybo, common 2개의 앱이 있고 각각 models.py 파일이 있습니다. 그래서 각각의 models.py 파일에 필요한 모델을 등록하여 사용할 수 있습니다. 지금 문제는 DJANGO_SETTINGS_MODULE 환경 변수 설정인것 같습니다. DJANGO_SETTINGS_MODULE 에 관한 내용은 다음 URL에서 확인해 보세요. https://wikidocs.net/75560 - 박응용님, 2023년 6월 29일 8:23 오전 추천 , 대댓글
@박응용님 네. 스승님 말씀대로 setting.py 파일 분리 때문에 발생하는 것으로 추측합니다. 제가 아직 장고 환경변수 지식이 없어서 해결을 못하는거 같습니다. 구글링을 더해보고, 해결되면 내용을 올리겠습니다. - hello_world님, M 2023년 6월 29일 3:07 오후 추천 , 대댓글
목록으로
1개의 답변이 있습니다. 1 / 1 Page

스승님. 방법을 찾았습니다. setting.py를 로컬과 서버로 분리한 후에 makemigrations를 하기 위해서는 터미널에서 다음과 같이 실행을 해야 하네요. 실행 결과를 같이 올립니다.

(mysite) PS C:\pybo_projects\mysite> python manage.py makemigrations polls --settings=config.settings.local
Migrations for 'polls':
  polls\migrations\0001_initial.py
    - Create model Questionnaire
    - Create model Choice

스승님께서 링크해주신 점프 투 장고 "settings.py 분리" 편을 보고 뒤에 옵션을 붙여서 실행해봤네요. 스승님께서 문제 원인을 확인해주셔서 해결할 수 있습니다. 감사합니다.

  • 참고 : 확신은 없지만 교재에 나와있는 mysite.cmd 파일로 DJANGO_SETTINGS_MODULE 환경변수 설정 시 파이참 터미널에서는 적용이 안되서 그런걸로 추측합니다. 윈도 cmd에서는 적용이 되는거 같습니다.

hello_world

M 2023년 6월 29일 3:50 오후