異なるアプリケーションのモデルに対するForeignKeyの件
MLで投稿したネタですが、モデルのForeignKeyを設定するとき、モデルが別のアプリケーションにあるとMySQLで外部キーが作成できません。
条件は、Django0.96でDBはMySQLになります。
構成はshoppingプロジェクトの下にitemとcategoryの2つのアプリケーションがある状況です。
各models.pyの記述はこんな感じで。
from django.db import models class Category(models.Model): name = models.CharField(u'name', maxlength=45)
from django.db import models from shopping.category.models import Category class Item(models.Model): name = models.CharField(u'name', maxlength=45) category = models.ForeignKey(Category)
これでsyncdbでデータベースにテーブルを作成するとこんな感じになります。
で、Genshiの関係でDjangoを1.0aplphaにしたんですが、1.0でまったく同じプロジェクトをsyncdbするとこうなります(色味が違うのはただの環境の違い)。
アプリケーション間で依存関係があるってのはあまり気持ちよくないです。
時間がなくて調べてはないんですが、そんな理由からアプリケーション間でのFKは張らないのかなぁと思っていたんですが、1.0では修正されているのでただのバグかも?