正直に今日やった自分のミスを書くよ。EngineのモデルがDjangoに似た設計になっていたり、kayで使ってるjinja2っていうテンプレートエンジンがDjangoのテンプレートエンジンに似た設計になってたりする関係で、結構Djangoに似ている。個人的にDjangoを使ってたこともあって、とってもお気に入りのフレームワークなんだね。ところで、Djangoにはdjango.contrib.contenttypesというアプリケーションが内蔵されていて、どういったものかというと、普通ForeignKeyは特定のテーブル内のレコードに対してしか張れないけど、contenttypesではテーブル名とテーブル内でのPKの組を使って、DB内の任意のレコードに対する参照を作ることができるようにしてくれる。これがあるおかげで、Djangoでは非常に再利用生の高いアプリケーションが沢山作られている。Django-taggingとかが有名かな。contenttypesは便利なんだよ。kayにはそんな感じの機能を提供するアプリケーションが無いことに気がついた。一丁作ってやるかと、思い立ってしこしこと作ったんだ。4時間くらいかかったかな。テストも書いて、ちゃんと動作することを確認して、こりゃ便利だと思ったからコミュニティに提供しようかなーとか考えていた時に、思い出した。Engineで外部キーっぽいのを提供してくれるReferencePropertyは、任意のモデルインスタンスを入れられるんだった!!というわけで、僕の4時間は全くの(というのは言い過ぎだけど)無駄に終わったわけ。そりゃ組み込みで提供されてりゃフレームワーク側で用意する必要なんかないよね。なんで作り始める前に思い出せなかったんだろう。これを作るためにgoogle.appengine.ext.dbモジュールのコードリーディングやったり、kayのコードも結構読んで勉強にはなったから、それでよしとしとこう。はてなブログPro髙橋侑久。アイコンは自作のハニワ。Qiitaを作っています。形式にしてコピーするArchiveスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。