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

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


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の安定性はどうなんでしょう?

カテゴリー: TurboGears タグ:
  1. コメントはまだありません。
  1. トラックバックはまだありません。