Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:“;“值太多,无法解包”;调用user.objects.get()时_Python_Django_Django Models_Django 1.6 - Fatal编程技术网

Python Django:“;“值太多,无法解包”;调用user.objects.get()时

Python Django:“;“值太多,无法解包”;调用user.objects.get()时,python,django,django-models,django-1.6,Python,Django,Django Models,Django 1.6,在Django 1.6中,我定义了一个自定义用户模型,但由于某种原因,现在当我创建一个超级用户并尝试获取它或作为该超级用户访问Django管理员时,我得到了这个ValueError:太多的值无法解包。关于这个错误,我已经仔细阅读了很多类似的问题,没有发现任何适合我的问题。我不知道会出什么问题 在自定义管理器中的自定义create_user和create_superuser方法中,我确实传递了一个额外的字段,但该字段实际上并没有进入模型,因此我不明白为什么会出现问题 此外,当尝试访问管理员时,我得

在Django 1.6中,我定义了一个自定义用户模型,但由于某种原因,现在当我创建一个超级用户并尝试获取它或作为该超级用户访问Django管理员时,我得到了这个
ValueError:太多的值无法解包。关于这个错误,我已经仔细阅读了很多类似的问题,没有发现任何适合我的问题。我不知道会出什么问题

在自定义管理器中的自定义
create_user
create_superuser
方法中,我确实传递了一个额外的字段,但该字段实际上并没有进入模型,因此我不明白为什么会出现问题

此外,当尝试访问管理员时,我得到了一个稍微不同的错误:
AttributeError:'UserObject'没有属性'has\u module\u perms'

完全回溯:

回溯(最近一次呼叫最后一次):
文件“”,第1行,在
get中第151行的文件“C:\Users\JJ\Coding\virtualenvs\TCR5venv\lib\site packages\django\db\models\manager.py”
返回self.get_queryset().get(*args,**kwargs)
get中的文件“C:\Users\JJ\Coding\virtualenvs\TCR5venv\lib\site packages\django\db\models\query.py”,第298行
clone=self.filter(*args,**kwargs)
文件“C:\Users\JJ\Coding\virtualenvs\TCR5venv\lib\site packages\django\db\models\query.py”,第590行,在过滤器中
返回self.\u filter\u或\u exclude(False、*args、**kwargs)
文件“C:\Users\JJ\Coding\virtualenvs\TCR5venv\lib\site packages\django\db\models\query.py”,第608行,在过滤器或排除中
clone.query.add_q(q(*args,**kwargs))
文件“C:\Users\JJ\Coding\virtualenvs\TCR5venv\lib\site packages\django\db\models\sql\query.py”,第1198行,在add\u q中
子句=self.\u添加\u q(其中\u部分,使用的\u别名)
文件“C:\Users\JJ\Coding\virtualenvs\TCR5venv\lib\site packages\django\db\models\sql\query.py”,第1232行,在添加
当前\u否定=当前\u否定)
文件“C:\Users\JJ\Coding\virtualenvs\TCR5venv\lib\site packages\django\db\models\sql\query.py”,第1035行,内置过滤器
arg,value=filter\u expr
ValueError:要解压缩的值太多
客户用户模型:

类用户对象(AbstractBaseUser):
email=models.EmailField(最大长度=254,唯一性=True,数据库索引=True)
用户名\字段='电子邮件'
#必填字段=[“学生”或“企业”,]
#告诉我们UserObject是企业还是学生
@财产
def类型(自身):
如果hasattr(self,'Student'.lower()):
返回'S'
elif hasattr(self,'BusinessHandler'.lower()):
返回“B”
其他:
raise TypeError,“UserObject既没有连接Student也没有连接BusinessHandler。”
#获取实际用户对象的伴随对象,无论是学生还是企业
@财产
def get_profile_对象(自身):
如果self.type='S':
返回getattr(self,'Student'.lower())
elif self.type==“B”:
返回getattr(self,'BusinessHandler'.lower())#以利用重构
@财产
def是大学学生(自我):
返回self.type=='S'
@财产
def是_业务(自我):
返回self.type=='B'
定义相关项(自身、输入元组):
'''
以表单形式(学生、企业[、其他])接收返回的选项元组。
根据需要返回相应的选项
'''

如果不是2您必须实施
has_module_perms
方法,如以下所述:

如果希望自定义用户模型也与Admin一起使用,则用户模型必须定义一些附加属性和方法


事实证明,这里的问题实际上与抛出的错误无关

我意识到我是在打电话

UserObject.objects.get('user@email.com')
而不是

UserObject.objects.get(email='user@email.com')
这就是抛出错误的原因。如果查看Django源代码,您会发现在为
QuerySet
构建筛选器时,Django会解压缩字段名和数据以在筛选器中使用,但由于我没有为
对象提供字段名。get(…)
,因此在解压缩时会引发错误


为此使用了Werkzeug live browser调试器;我强烈推荐。

这是一个救命稻草!嗯,至少可以节省时间。非常感谢。只是做了完全相同的事情。谢谢