Django models 在django rest framework中使用SessionAuthentication时,如何禁用导入authtoken.models?

Django models 在django rest framework中使用SessionAuthentication时,如何禁用导入authtoken.models?,django-models,django-rest-framework,Django Models,Django Rest Framework,在rest_框架设置中,我将SessionAuthentication设置为默认身份验证类 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework.authentication.SessionAuthentication', ) 问题是,我的User DELETE api视图试图折叠authtoken_令牌表上的DELETE,该表不存在(因为我不需要它),从而引发数据库异常 具体来说,当在DestroyModelMixin.destroy

在rest_框架设置中,我将SessionAuthentication设置为默认身份验证类

'DEFAULT_AUTHENTICATION_CLASSES': (
    'rest_framework.authentication.SessionAuthentication',
)
问题是,我的User DELETE api视图试图折叠authtoken_令牌表上的DELETE,该表不存在(因为我不需要它),从而引发数据库异常

具体来说,当在DestroyModelMixin.destroy中调用obj.delete()时,会引发此异常:

DatabaseError: relation "authtoken_token" does not exist
LINE 1: ...oken"."user_id", "authtoken_token"."created" FROM "authtoken...
是否需要同步DB rest_框架的模型,即使不需要它们

有没有一种方法可以在不包含authtoken.models的情况下使用SessionAuthentication

我做错什么了吗


(将authtoken.models.Token完全从rest\u framework/authentication.py中删除似乎可以解决问题)

以下是根本原因


在此期间,我们将整理一个解决方案,这可能只涉及确保
令牌
不会被导入任何地方,除非
rest\u框架。authtoken
位于
已安装的应用程序中

否,除非在
installed\u APPS
设置中明确安装了
rest\u framework.authtoken
,否则不需要
syncdb
。您是否在您的
安装的应用程序中意外地获得了它,或者您是否无意中创建了ForeignKey或与它的其他关系?什么是完全回溯?我没有在我已安装的应用程序中显式安装rest\u framework.authtoken(只有rest\u framework)。但我开始怀疑,在我们相当复杂的django项目的背景下,会发生一些automagic事件。关于如何调试这个有什么想法吗?以下是对DestroyModelMixin的回溯:view使用的模型的模型定义是什么?显然,这只发生在测试中,当我使用django.test.client.client(afaik模拟实际HTTP请求)执行删除请求时,并且只有在测试中导入rest_framework.authentication时才会发生。对API的实际HTTP DELETE请求按预期工作(删除用户时缺少authtoken_令牌不会引发异常)。我将尝试在一个干净的django项目中重现这种行为,因为这个项目太复杂,我无法在这里充分描述它。感谢所有的帮助和这个伟大的框架!如果有人遇到这个问题,tom将其修复,最简单的解决方案是将版本升级到2.2.4(或更高版本)