2016-07-04 7 views
0

私は、スーパーユーザーが物事が表示される前に承認する必要があるようにデータベースに入るアイテムをモデレートする方法を見つけようとしています。私はDjango-Monitor - get_model()は最大3つの引数をとります(4が指定されています)

get_model takes at most 3 arguments (4 given) 

:私は、Djangoのモニターはかなりすべてのことのを行うために管理し、私は(here)のドキュメントを読んで、次のされていることを発見し、私はdjango_monitor.nq(MODEL_NAME)を呼び出すたび私は、エラーが言っていますこの問題を引き起こしていることを理解しておらず、それを解決するために何かを見つけることができませんでした。

+1

あなたはdjango-monitorがあなたのdjangoバージョンで動作していることを確かめていますか? django-monitorはこの3年間更新されていません! – Jerzyk

+0

私たちのバージョンとあなたのモデルコードを表示してください。 – Destrif

答えて

0

これはlibの問題のようです。その行に原因があることが確実であれば、libの作業はエラーを受けています。私はそれがlibエラーであることを疑うので、完全なトレースバックが大いに役立つでしょうし、モデル宣言も同様です。 また、djangoのバージョンがlibでサポートされているかどうかを確認してください。

ところで、あまりにも多くの引数を指定して関数を呼び出すと、そのエラーが発生します。 あなたはクラスを持っていることを想像し

class Foo(object): 
    def __init__(self, other): 
     self.other=other 

呼び出し:クラスのINITは、2つの引数(自己と他者を)取るため

>>> 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) 

はFooは(1)働くことがありますように

0

に思えますあなたの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ない場合を除き。 release notesで説明したように

+0

私はdjango 1.7を使用している可能性があると思っていますが、あなたが言及したポイントは、それは障害があると言われていますが、なぜ失敗するのか分からないのです。私はDjango-moderationを別のものにするかもしれない。 – Gary

+0

これは、django 1にとって役立ちます。7つの期待されるパラメータのうち、関数の 'get_model'は' self'です。 'try'ブロックと' except'ブロックの両方のコードが失敗しました。 https://github.com/django/django/blob/d92b08536d873c0966e8192e64d8e8bd9de79ebe/django/apps/registry.py#L186 – fips

+0

どうすれば修正できますか? – Gary

0

get_model()は1.7に変更されました:

アプリレジストリは、古いアプリのキャッシュのいくつかの機能を保存しています。 [...]

  • : は、アプリのキャッシュがプライベートAPIだったにもかかわらず、時代遅れの方法と 引数は ただちに有効になり、以下の変更を除いて、標準の非推奨経路を通って削除されます

  • get_modelとget_modelsのonly_installed引数は存在しません。また、get_modelのseed_cache引数も存在しません。

ジャンゴモニタはget_model()にこれらの引数のうちの少なくとも一つを通過しようとするので、Djangoの1.7以上と互換性がありません。 app_labelmodel_name引数のみを受け入れます。

関連する問題