사용자 정의 모델 필드가있는 응용 프로그램을 작성하고 있습니다. 테스트 중에 만 사용되는 모델을 사용하여 해당 필드를 테스트하려고하지만 모델에서 테스트를 수행하는 데 어려움을 겪고 있습니다. 테스트에만 사용되는 Django 모델 등록 방법
내 응용 프로그램 구조의 일부
는 다음과 같이이다 :myapp/
fields.py
models.py
tests/
fields/
models.py
tests.py
settings.py
test_models.py
test_views.py
tests/fields/models.py
from django.db import models
from myapp.fields import MyCustomField
class MyTestModel(models.Model):
custom_field = MyCustomField()
그때 MyTestModel
을 가져 tests/fields/tests.py
에서 사용하려고합니다.
것들 내가
1
가 처음에 내가 가진 ... 시도했다 :RuntimeError: Model class tests.fields.models.MyTestModel doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
2
그래서 내가tests/settings.py
에
INSTALLED_APPS
에
"tests",
을 추가했다. 하지만 내가 얻을 :
django.db.utils.OperationalError: no such table: tests_mytestmodel
3. 나는 시험에 신안 등록을 분리에 대한 this in the docs을 보았다.
from django.db import models
from django.test import TestCase
from django.test.utils import isolate_apps
from myapp.fields import MyCustomField
@isolate_apps('tests')
class MyTestCase(TestCase):
def test_things_work(self):
class MyTestModel(models.Model):
custom_field = MyCustomField()
obj = MyTestModel.objects.create(custom_field='foo')
self.assertEqual(...)
을하지만 여전히 나를 가져옵니다 : 그래서 tests/fields/tests.py
로 모델을 이동 해봤
django.db.utils.OperationalError: no such table: tests_mytestmodel
나는 사용자 정의 필드를 제공하고 다른 장고 많은 프로젝트의 시험을 통해 찾고 시도했습니다 내가 분명치 않게 모델 테스트를 통해 실종 된 것을 볼 수는 없다.
어떻게 든 테스트에 사용 된 이러한 모델의 마이그레이션이 필요합니다. 맞습니까? 방법? 또는 다른 것? 테스트 응용 프로그램은 중첩 된 폴더에 있기 때문에
무엇을 가리키는 동안 당신은'makemigrations' 명령을 실행하는 경우 '--settings'을 사용하여 테스트 설정에 적용 하시겠습니까? 테스트가 실행될 때 선택되는 테스트 응용 프로그램의 초기 마이그레이션을 제공해야합니다. –
흠, 모델을 인식하지 못합니다 ("변경 사항 없음"). 아마 그것들을''tests/models.py''에 넣을 수는 있습니다.하지만 다른 곳에서는이 방법을 본적이 없습니다. –
'tests.fields'를'tests' 대신'INSTALLED_APPS'에 추가해야한다고 생각합니다. –