2010-11-18 3 views
1

私はちょうどPythonを学び始めました。私はゆっくりとそれをやっていますが、私は問題に直面しました。Pythonの同じファイルに2つのデータベースを定義することはできませんか?

私は、GoogleのApp Launcher SDKを使用して記事を含む簡単なウェブサイトを作成しようとしています。私はGoogleのサイトではほとんどのガイドに従ったときに

は今、すべてがうまく働いていないが、今は別のデータベースを作成します:

class Articles(db.Model): 
    title = db.TextProperty() 
    content = db.StringProperty(multiline=True) 
    date = db.DateTimeProperty(auto_now_add=True) 

ここでエラーなしに。

ここ
class Articles(webapp.RequestHandler): 
    def get(self): 
     articles_query = Articles.all().order('-date') 
     articles = articles_query.fetch(10) 

     template_values = {'articles': articles} 

     path = os.path.join(os.path.dirname(__file__), 'articles.html') 
     self.response.out.write(template.render(path, template_values)) 

私はエラーを受け取りました:

line 45, in get 
    articles_query = Articles.all().order('-date') 
AttributeError: type object 'Articles' has no attribute 'all' 

私は基本的に、Googleのチュートリアルだけ変化からクエリをコピーした私は、その後、クエリを作成するすべての情報を取得し、テンプレートにそれを投稿してみてください 変数はまだ動作しません。

アイデア?

答えて

7

2つのデータベースを定義したわけではありませんが、Articlesという2つのクラスを作成しようとしました。 Pythonはすぐにその頭を守ることができないので、class Articles(webapp.RequestHandler)を作成すると、class Articles(db.Model)が置き換えられます。

webapp.RequestHandlerall()メソッドを持たず、2番目のArticlesクラスに定義していません。だから、あなたがしている特定のエラーを得るのです。

クラスには異なる名前を使用する必要があります。

+0

おお、私はとても恥ずかしい、あなたの特定の問題解決のための十分な..ですどうもありがとう、どのように私は、このようなミスをするだろうか? – Crembo

+0

ああ、簡単。私は毎日このように3つのことをしています。 :-) –

2

私はこのよう*にリファクタリングします:

  1. models.pyがあなたのfrom models import Articlesを追加すると呼ばれる別のファイルにあなたのArticlesモデルを移動class ArticlesHandler(webapp.RequestHandler)

  2. class Articles(webapp.RequestHandler)の名前を変更ウェブハンドラーファイル

ハンドラーの接尾辞を使用すると、標準クラスとWebハンドラーを区別できます。 異なるmodels.pyモジュールは、モデル実装を1か所で分離し、プロジェクトがより複雑になるときに役立ちます。

*ステップ1は

関連する問題