【问题标题】:AttributeError: 'NoneType' object has no attribute '_default_manager' when running lettuce with django rest frameworkAttributeError:使用 django rest 框架运行生菜时,“NoneType”对象没有属性“_default_manager”
【发布时间】:2014-01-15 23:21:55
【问题描述】:

我正在尝试使用生菜来实现 BDD 以创建一个休息框架 api,但是当我执行命令 python manage.py harvest 时出现以下错误

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

详细的堆栈跟踪是:

(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

所有代码都可以在downloadcode找到。

请注意,当我从浏览器运行 api 时,它工作正常。

是什么导致了AttributeError: 'NoneType' object has no attribute '_default_manager'?

【问题讨论】:

  • 你能把你的代码内联吗?
  • 由于某种原因,当您尝试访问其_default_manager 属性时,related_model 是None。没有你的代码,我们不能说更多
  • 我已经发布了包含整个代码的链接。是否有任何特定文件的代码我应该内联添加?

标签: python django django-rest-framework lettuce


【解决方案1】:

我刚才遇到了这个错误。我的错误的原因是因为我创建了一个从 App A 的 Model X 到 App B 的 Model Y 的 ManyToManyField。当我尝试通过 python manage.py schemamigration --auto app_a 创建架构迁移时,它引发了这个错误,因为我有还没有:

  1. 在settings.py的INSTALLED_APPS元组中包含'app_b'
  2. 尚未为app_b 创建初始架构迁移(将app_b 添加到INSTALLED_APPS 是不可能的)。

实际上,我链接到了一个当时不为人知的模型。希望这可以帮助将来的人。

编辑:实际上,经过进一步检查,我现在意识到 之所以如此模棱两可地提出此错误是因为 django-debug-toolbar。显然 DjangoDebugToolbar 导致了一些正确传播错误的问题。在INSTALLED_APPS 中禁用它会使错误变得明显。

【讨论】:

    猜你喜欢
    • 2016-04-23
    • 1970-01-01
    • 2018-02-11
    • 2016-10-21
    • 1970-01-01
    • 1970-01-01
    • 2020-01-17
    • 1970-01-01
    • 2018-04-11
    相关资源
    最近更新 更多