我正在将项目从使用django-social-auth移植到python-social-auth。我按照文档中的instructions进行了操作,但是当我尝试运行项目的测试(./manage.py测试)时,我收到以下错误:
Creating test database for alias 'default' ...
CommandError: One or more models did not validate:
default.usersocialauth: Accessor for field 'user' clashes with related field 'User.social_auth'. Add a related_name argument to the definition for 'user'.
default.usersocialauth: Reverse query name for field 'user' clashes with related field 'User.social_auth'. Add a related_name argument to the definition for 'user'.
./ manage.py syncdb和./manage migrate正常工作,正如预期的那样,因为(如文档所述),python-social-auth中的模型表名称被定义为与django-social上使用的那些兼容-auth,因此不需要迁移数据。
答案 0 :(得分:4)
遇到同样的问题。
尽管django-social-auth库已从INSTALLED_APPS中删除,但django仍然发现冲突,因为django-social-auth和python-social-auth都使用相同的外键和相同的related_name参数。
要确切知道python-social-auth与之冲突的模型,请在
中添加断点get_validation_errors (validation.py)
第148和150行
for r in rel_opts.get_all_related_objects():
if r.field is not f:
if r.get_accessor_name() == rel_name:
e.add(opts, "Accessor for field '%s' clashes with related field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))
if r.get_accessor_name() == rel_query_name:
e.add(opts, "Reverse query name for field '%s' clashes with related field '%s.%s'. Add a related_name argument to the definition for '%s'." % (f.name, rel_opts.object_name, r.get_accessor_name(), f.name))
查看'r'变量将显示正在发生冲突的相关对象。
从系统中完全删除库django-social-auth解决了这个问题。
由于它最初安装了easy_install,我使用rm -rf将其从site-packages中删除,但是还记得从easy_install.pth中删除该名称
您也可以使用pip uninstall
希望这有帮助。