>>> 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
>>>
我在这里遗漏了什么吗?
您已经通过分配给同名的局部变量来踩踏
list
。不要这样做。
应用这个:
if isinstance(names, type([])):
但这可以在 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
如果您不小心弄乱了 Django 模型中的外键字段语法,也可能会发生这种情况。编写外键字段时,可以有:
ModelName
或:
'app_name.ModelName'
但你不能拥有:
'ModelName'
通过艰苦的方式学习这一点。
当您引用实际不存在的模型并且使用“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
模型确实存在。如果它没有首先为公司模型创建迁移并应用该迁移。之后您可以像上面那样参考它。
如果您使用 Jupyter 笔记本,请执行以下操作:
del str
万一其他人在这里,因为 django 的 migrate 命令给出了这个错误,我通过在更改设置后将设置中的 TIME_ZONE 更改回“UTC”来修复我的错误,我想对 models.py 之外的数据库进行任何更改都会导致此错误,因此请检查您的所有设置以及您是否也从外部更改了数据库