typeError:isinstance() arg 2 必须是类型或类型元组>>>

问题描述 投票:0回答:7
>>> names=['jill','jack']
>>> isinstance(names,list)
Traceback (most recent call last):
  File "<pyshell#291>", line 1, in <module>
    isinstance(names,list)
TypeError: isinstance() arg 2 must be a type or tuple of types
>>> 

我在这里遗漏了什么吗?

python
7个回答
73
投票

您已经通过分配给同名的局部变量来踩踏

list
。不要这样做。


22
投票

应用这个:

if isinstance(names, type([])):

9
投票

但这可以在 win32 上的 Python (v3.7.1:260ec2c36a, Oct 20 2018, 14:05:16) [MSC v.1915 32 bit (Intel)] 中运行:

>>> names=['jill', 'jack']
>>> isinstance(names, list)
True

8
投票

如果您不小心弄乱了 Django 模型中的外键字段语法,也可能会发生这种情况。编写外键字段时,可以有:

ModelName

或:

'app_name.ModelName'

但你不能拥有:

'ModelName'

通过艰苦的方式学习这一点。


1
投票

当您引用实际不存在的模型并且使用“app_name.model_name”语法以 fk 关系引用它时,就会发生这种情况。

摘录是,代替 fk 中的

app_name.model_name
,首先使用提到的语法删除所有这些字段并应用迁移。

==> 就像下面的:

company = models.ForeignKey('core_company.Company', 
null=True, 
blank=True, 
verbose_name="Company", 
on_delete=models.CASCADE,related_name="%(app_label)s_%(class)s_related",
related_query_name="%(app_label)s_%(class)ss")

***** 解决方案 *****

从模型中删除此字段,并首先确保

core_company.Company
模型确实存在。如果它没有首先为公司模型创建迁移并应用该迁移。之后您可以像上面那样参考它。


0
投票

如果您使用 Jupyter 笔记本,请执行以下操作:

del str


0
投票

万一其他人在这里,因为 django 的 migrate 命令给出了这个错误,我通过在更改设置后将设置中的 TIME_ZONE 更改回“UTC”来修复我的错误,我想对 models.py 之外的数据库进行任何更改都会导致此错误,因此请检查您的所有设置以及您是否也从外部更改了数据库

© www.soinside.com 2019 - 2024. All rights reserved.