Django.core.exceptions.ImproperlyConfigured

Недавно я перешел на другую машину и снова должен был проверить свой проект из подрывной деятельности, но я уверен, что этот компьютер имеет Django 1.8, а проект ожидает 1.7.

Я попытался синхронизировать свой db с кодом для создания необходимых таблиц, но я получаю следующую ошибку.

C:\Users\jont\Documents\ATP\Webapp>manage.py syncdb
C:\Python27\lib\site-packages\admin_tools\utils.py:9: RemovedInDjango19Warning:      
django.utils.importlib will be removed in Django 1.9.
from django.utils.importlib import import_module

c:\users\jont\documents\django-trunk\django\contrib\contenttypes\models.py:148:  
RemovedInDjango19Warning: Model class django.contrib.contenttypes.models.ContentType doesn't de
her isn't in an application in INSTALLED_APPS or else was imported before its application was  
loaded. This will no longer be supported in Django 1.9.
class ContentType(models.Model):

C:\Python27\lib\site-packages\admin_tools\dashboard\modules.py:8: RemovedInDjango19Warning: The 
django.forms.util module has been renamed. Use django.forms.utils instead.
from django.forms.util import flatatt

C:\Python27\lib\site-packages\django_tables2\tables.py:171: RemovedInDjango19Warning: SortedDict
is deprecated and will be removed in Django 1.9. attrs["base_columns"] =  
SortedDict(parent_columns)

C:\Python27\lib\site-packages\django_tables2\tables.py:193: RemovedInDjango19Warning: SortedDict 
is deprecated and will be removed in Django 1.9.
attrs["base_columns"].update(SortedDict(cols))

Traceback (most recent call last):
File "C:\Users\jont\Documents\ATP\Webapp\manage.py", line 15, in <module>
execute_from_command_line(sys.argv)
File "c:\users\jont\documents\django-trunk\django\core\management\__init__.py", line 336, in
execute_from_command_line
utility.execute()
File "c:\users\jont\documents\django-trunk\django\core\management\__init__.py", line 310, in 
execute
django.setup()
File "c:\users\jont\documents\django-trunk\django\__init__.py", line 23, in setup
apps.populate(settings.INSTALLED_APPS)
File "c:\users\jont\documents\django-trunk\django\apps\registry.py", line 115, in populate
app_config.ready()
File "c:\users\jont\documents\django-trunk\django\contrib\admin\apps.py", line 22, in ready
self.module.autodiscover()
File "c:\users\jont\documents\django-trunk\django\contrib\admin\__init__.py", line 24, in  
autodiscover
autodiscover_modules('admin', register_to=site)
File "c:\users\jont\documents\django-trunk\django\utils\module_loading.py", line 73, in 
autodiscover_modules
import_module('%s.%s' % (app_config.name, module_to_search))
File "C:\Python27\lib\importlib\__init__.py", line 37, in import_module
__import__(name)
File "C:\Users\jont\Documents\ATP\Webapp\jobs\admin.py", line 4, in <module>
from jobs.views import registration
File "C:\Users\jont\Documents\ATP\Webapp\jobs\views.py", line 12, in <module>
from jobs.forms import ApplicantForm, JobForm, \
File "C:\Users\jont\Documents\ATP\Webapp\jobs\forms.py", line 8, in <module>
class JobForm(forms.ModelForm):
File "c:\users\jont\documents\django-trunk\django\forms\models.py", line 272, in __new__
"needs updating." % name
django.core.exceptions.ImproperlyConfigured: Creating a ModelForm without either the 'fields'   attribute or the 'exclude' attribute is prohibited; form JobForm needs updating.

django.core.exceptions.ImproperlyConfigured: Creating a ModelForm without either the 'fields' attribute or the 'exclude' attribute is prohibited; form JobForm needs updating.

Ответы

Ответ 1

Как и упоминания об ошибках, вам нужно явно указать поля или исключить.

Попробуйте это

class JobForm(models.ModelForm):
    #fields

    class Meta:
        model = Job
        fields = "__all__" 

который будет включать все поля

Вот соответствующая документация (примечания к выпуску 1.6)

Ранее, если бы вы хотели, чтобы ModelForm использовал все поля в модели, вы можете просто опустить атрибут Meta.fields, и все поля будут.

Это может привести к проблемам безопасности, когда поля добавляются в модель и, непреднамеренно, автоматически становятся доступными для редактирования конечными пользователями. В в некоторых случаях, в частности с булевыми полями, это возможно проблема должна быть полностью невидимой. Это форма массового присвоения уязвимость.

По этой причине это поведение устарело и используется Параметр Meta.exclude настоятельно не рекомендуется. Вместо этого все поля, которые предназначены для включения в форму, должны быть явно указаны в атрибут полей.

Если этот случай безопасности действительно не применяется в вашем случае, есть ярлык, чтобы явно указать, что все поля должны использоваться - используйте специальное значение "__all__" для атрибута полей

Ответ 2

Вы можете установить поля или исключить в ModelForm в Django 1.7. Он изменяется в 1.8, вы должны устанавливать поля или исключать в классе Meta в ModelForm.

class JobForm(models.ModelForm):
#fields

class Meta:
    model = Job
    fields = "__all__" 

Ответ 3

Попадание в Django 1.7, похоже, сделало трюк. Казалось, что нет простого способа адаптации кода к Django 1.8.