简体   繁体   中英

AttributeError: 'NoneType' object has no attribute '_default_manager' when running lettuce with django rest framework

I am trying to use lettuce to implement BDD for creating an rest framework api but when I execute the command python manage.py harvest I get following error

/rest_framework/serializers.py", line 818, in get_related_field
    'queryset': related_model._default_manager,
AttributeError: 'NoneType' object has no attribute '_default_manager'

Detailed stack trace is:

(envSamplePayApp)root@ubuntu:/pythonWorkspace/samplePayProject# python manage.py harvest
Django's builtin server is running at 0.0.0.0:8000
Traceback (most recent call last):
  File "/pythonWorkspace/samplePayProject/envSamplePayApp/local/lib/python2.7/site-packages/lettuce/django/management/commands/harvest.py", line 167, in handle
    result = runner.run()
  File "/pythonWorkspace/samplePayProject/envSamplePayApp/local/lib/python2.7/site-packages/lettuce/__init__.py", line 137, in run
    self.loader.find_and_load_step_definitions()
  File "/pythonWorkspace/samplePayProject/envSamplePayApp/local/lib/python2.7/site-packages/lettuce/fs.py", line 49, in find_and_load_step_definitions
    module = __import__(to_load)
  File "/pythonWorkspace/samplePayProject/envSamplePayApp/local/lib/python2.7/site-packages/rest_framework/tests/test_serializer_import.py", line 4, in <module>
    from rest_framework.tests.accounts.serializers import AccountSerializer
  File "/pythonWorkspace/samplePayProject/envSamplePayApp/local/lib/python2.7/site-packages/rest_framework/tests/accounts/serializers.py", line 6, in <module>
    class AccountSerializer(serializers.ModelSerializer):
  File "/pythonWorkspace/samplePayProject/envSamplePayApp/local/lib/python2.7/site-packages/rest_framework/tests/accounts/serializers.py", line 8, in AccountSerializer
    admins = UserSerializer(many=True)
  File "/pythonWorkspace/samplePayProject/envSamplePayApp/local/lib/python2.7/site-packages/rest_framework/serializers.py", line 196, in __init__
    self.fields = self.get_fields()
  File "/pythonWorkspace/samplePayProject/envSamplePayApp/local/lib/python2.7/site-packages/rest_framework/serializers.py", line 232, in get_fields
    default_fields = self.get_default_fields()
  File "/pythonWorkspace/samplePayProject/envSamplePayApp/local/lib/python2.7/site-packages/rest_framework/serializers.py", line 716, in get_default_fields
    field = self.get_related_field(model_field, related_model, to_many)
  File "/pythonWorkspace/samplePayProject/envSamplePayApp/local/lib/python2.7/site-packages

All the code can be found at downloadcode .

Note when I run the api from browser it works fine.

What is causing the AttributeError: 'NoneType' object has no attribute '_default_manager' ?

I ran into this error just now. The cause of my error was due to the fact that I had created a ManyToManyField from Model X of App A to Model Y of App B. When I tried to create schema migration via python manage.py schemamigration --auto app_a , it raised this error because I had yet to:

  1. include 'app_b' in the INSTALLED_APPS tuple of settings.py
  2. not having created the initial schema migration for app_b (which would not be possible with adding app_b to INSTALLED_APPS ).

Effectively, I linked to an model that was not known at the time. Hopefully this can help someone in the future.

EDIT: Actually, on further inspection, I realize now the reason that this error is being raised so ambiguously is because of django-debug-toolbar . Apparently DjangoDebugToolbar is causing some issues around errors propagating properly. Disabling it in INSTALLED_APPS allowed the errors to become apparent.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM