1

私はDjangoを始めています。管理者を機能させることができません(以前は機能していましたが、どの更新で壊れたのかわかりません...)。

モデルを管理者に登録するとすぐに、任意の URL で次のエラーが発生して Web サイトがクラッシュします。

'module' object is not iterable

トレースでは、これにバグがあります:

/Library/Python/2.7/site-packages/django/contrib/admin/sites.py in register
        for model in model_or_iterable: 

admin_class 
<class 'django.contrib.admin.options.ModelAdmin'>
options 
{}
model_or_iterable   
<module 'model.Branch' from '...../farmpower/src/model/Branch.pyc'>
self    
<django.contrib.admin.sites.AdminSite object at 0x1098196d0>

その例では、Branch (admin.py のコード) を使用して、さまざまなモデルを試しました。

from django.contrib import admin
from models import *

admin.site.register(Branch)

models.py:

import Page, Promotion, Branch, Contact

Branch.py

from django.db import models
from django.utils.translation import ugettext_lazy as _

class Branch(models.Model):
    name = models.CharField

[...]

class Meta:
    app_label = "model"
    db_table  = "cms_branch"

def __unicode__(self):
    return self.name

ご協力ありがとうございました !

4

2 に答える 2

3

あなたのコードには、あまりきちんとしていないものがいくつかあります。そのうちの 1 つが表示されているエラーにつながる可能性がありますが、どれがそれであるかはわかりません。

  • 相対インポート ( from models import ...) を使用します。のような絶対インポートを行う方がより堅牢ですfrom yourapp.models import ...)。

  • 「スターインポート」を使用します: from models import *. これを行っているファイルに正確に何をインポートしているのか、実際にはわかりません。また、自動コード チェッカー ( pyflakes など) は、インポートが欠落しているかどうかをチェックできません。

  • models.ymlファイル名として言及します。これは.py拡張機能ではないため、python はそれを処理しません。

  • Metaモデルの で設定したアプリ名は ですmodel。"models" と "model" はかなり django 内部の名前であることに注意してください。そのため、「models.py」を含む「model」というアプリを使用すると、簡単に問題が発生する可能性があります。アプリがないのはなぜyourappですか?

うまくいかない可能性のあるいくつかの方法を次に示します。

スター インポート: で別のものをインポートした可能性adminがありmodels.pyますか? スターインポートを介して、admin.py のものを上書きするのはどれですか?

The models.yml: それが本当にその名前なら、何がfrom models import *返されますか? 存在しmodels.pyない ? Branch明示的にインポートしてみてください:from models import Branch失敗するかどうかを確認してください。

アプリ名: アプリが実際に「モデル」と呼ばれfrom models import *ている場合、入力ミスがあった場合に備えて、「model.models」の代わりに、相対インポートによって最上位の「モデル」モジュールが取得される可能性があります。

于 2012-12-10T08:24:05.613 に答える
0

それはあなたのものです

from models import *

そのはず

from appName.models import className
于 2012-12-10T08:25:54.653 に答える