ホーム > TurboGears > 制約を含むモデルのmodel.pyへの定義。

制約を含むモデルのmodel.pyへの定義。 このエントリーを含むはてなブックマーク はてなブックマーク - 制約を含むモデルのmodel.pyへの定義。

2006 年 4 月 26 日

DBにPostgreSQLを指定したとき(他のDBを指定したことがないので他は不明です。:-P)に、model.pyでForeignKey()を使うと、外部キー制約がつきます。

[ref.] SQLObject 0.7 – http://www.python.jp/~ymasuda/sqlobject/SQLObject.html

ここで、ふつうにクラスを並べると、クラス名でソートされた順でテーブルが作成されるらしいのですが、ソート結果により依存関係が逆転してると当然のごとくエラーが出ます。
こんな時にはmodel.pyの中でsoClassesという名前でタプルを宣言しておくと、その順番でテーブルが作成されるようなので、この問題を回避することができます。

サンプルコードを示します。(クラス名でソートするとEmployeeが先に来ることに注目。)

soClasses = (
"Group",
"Employee"
)

class Group(SQLObject):
name = StringCol()

class Employee(SQLObject):
firstName = StringCol()
lastName  = StringCol()
group     = ForeignKey("Group")

柴田さんとおおたにさんに感謝。
[ref.] PostgreSQLとTGの安定性はどうなんでしょう?

LINEで送る
Pocket

カテゴリー: TurboGears タグ:
コメントは受け付けていません。