移行

2012-02-07 7 views
1

どのように私は私の知る限りでは、あなたがすべて書き換えする必要がある(GoogleのAPIなし)純粋なDjangoのモデルシステム 移行

class A(db.Model): 
    name = db.StringProperty(multiline=True) 
    description = db.TextProperty() 
    isAdvanced = db.BooleanProperty() 
    foos = db.ListProperty(db.Key)  
    bar = db.IntegerProperty() 

    def get_foos(self): 
     return db.get(self.foos) 

答えて

4

AFAIK、あなたは手動で行う必要があります。ありがたいことに、Djangoはあなたのために仕事のほとんどを行うことができます。

まず、settings.pyに適切なデータベース設定があることを確認します。データベース構成hereの詳細なウォークスルーがあります。

完了したら、python manage.py inspectdb > models.pyを実行してください。モデルのpythonコードを構成するmanage.pyの出力をmodels.pyにダンプし、関連するDjangoアプリケーションに追加することができます。それをもう一度確認する必要がありますが、それほど労力はかかりません。

また、個人的な経験から、問題が発生した場合はお知らせします。例えば、PostgreSQLのmoneyとMySQLのcurrencyのフィールドは、Djangoのモデルでは認識されないため、models.TextField()とそれに続く# This is a guess.が出力されます。

編集:それをグーグルときはちょうどこの記事を見つけた: Migrating from Google App Engine to Django

EDIT 2:私はちょうど私はおそらくあなたの質問に答えなかったが実現。これはおおよそのものですが、python manage.py inspectdb > models.pyを実行することをお勧めします。

from django.db import models 

class A(models.Model): 
    name = models.TextField() 
    description = models.TextField() 
    isAdvanced = models.BooleanField() 
    foos = # Dunno, a quick Google search doesn't turn up the equivalent 
    bar = models.IntegerField() 

nameためmultiline属性を取得するには、GoogleグループやGoogle、それを自分からthis questionを見てみたいことがあります。

+0

これはモデルのようです.ManyToManyFieldで確認できますか? –

+1

@Christophe私はそれに目を通しますが、GoogleのAppEngineドキュメントを理解したところ、モデルの「ForeignKey」/ SQLデータ型のように思えます。 – Edwin

+0

よろしくお願い致します。モデルが単純かどうか知っていますか? –

0

のために、このAppEngineの固有のコードを書き換えることができますdbは手でコードを関連付けました。私も同様の状況にあります。 :-)

2

エドウィンの答えが良いスタートです。

私は基本的なdjangoの代わりにdjango-nonrelを使っています。

django-nonrelにはdjangotoolboxというモジュールが付属しており、Google ListPropertyのListFieldラッパーを提供しています。通常のdjangoには同等の機能はありません。