Django监视器 - get_model()至多需要3个参数(4给出)
我一直在试图找到一种方法来缓和进入数据库的项目,以便超级用户必须在显示之前审批。我发现,Django的监控管理几乎做所有这一切,我已经阅读并按照文件(here),每当我打电话django_monitor.nq(模型名称),我得到一个错误说:Django监视器 - get_model()至多需要3个参数(4给出)
get_model takes at most 3 arguments (4 given)
我不明白是什么导致了这个问题,并且一直无法找到任何有助于解决问题的方法。
这看起来像一个lib问题。如果您确定它是由该行引起的,那么lib的工作就会出错。我怀疑这是一个lib错误,所以完整的回溯会帮助很多,并且模型声明也是如此。 另外,看看你的django版本是否被lib支持。
顺便说一下,当您调用一个函数的参数太多时,会导致该错误。 假设你有一个类
class Foo(object):
def __init__(self, other):
self.other=other
电话:
>>> Foo(1)
<Foo object at 0x7f27566f90d0>
>>> Foo(1,2)
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: __init__() takes exactly 2 arguments (3 given)
美孚(1)工作,因为类的初始化需要两个参数(个体经营等)
现在看来似乎是与您的django版本不兼容。看着好像它是固定的repo source:
try:
registered_model = get_model(
model._meta.app_label, model._meta.object_name, False, False
)
except TypeError:
# Django versions prior to 1.4 accept 3 params to get_model.
registered_model = get_model(
model._meta.app_label, model._meta.object_name, False
)
除非错误现在提出的是不是一个TypeError
。
get_model()
在1.7变为如在release notes解释说:
该应用程序的注册表保留了旧的应用程序缓存的某些功能。 尽管应用程序缓存是一个私人API,过时的方法和 参数将通过一个标准的折旧路径拆下,用 的是立即生效的以下变化除外:
[...]
get_model和get_models的only_installed参数不再存在,也不存在get_model的seed_cache参数。
由于django的监视器尝试的这些参数的至少一个传递到get_model()
,它与Django的不相容1.7+。它只接受app_label
和model_name
参数。
你确定django-monitor正在使用你的django版本吗? django-monitor在过去3年没有更新! – Jerzyk
请向我们展示版本和您的型号代码。 – Destrif