2012-04-26 8 views
0

Djangoでデータベースを変更するためのフォームの提示に対処しようとすると、私は変更できない問題があります。問題の構造は以下の通りであり、すべてのモデルは管理されていません。Djangoは奇妙なモデル関係で結んでいます

class Persons(models.Model): 
    personid = models.BigIntegerField(primary_key=True, db_column='PersonID') 
    .... 

class Phones(models.Model): 
    phoneid = models.BigIntegerField(primary_key=True, db_column='PhoneID') 
    number = models.CharField(max_length=60, db_column='Number', blank=True) 
    type = models.CharField(max_length=15, db_column='Type', blank=True) 
    ... 

class Personsphones(models.Model): 
    personphoneid = models.BigIntegerField(primary_key=True, db_column='PersonPhoneID') 
    personid = models.ForeignKey(Persons, db_column='PersonID') 
    phoneid = models.ForeignKey(Phones, db_column='PhoneID') 
    ... 

私は特定の「人」とほかには、「携帯電話」は「人」に属する追加/削除/変更することができるように関連付けられている「携帯電話」のすべてを表示するためのフォームを作成します。今私が考えることができるのは、モデルホルダーに「Phones」を表示し、手動で追加または削除する場合は、「Personsphones」の関係を設定することです。どのようにこのモデルの設定を最善に対処する上の任意のアイデア?あなたは限りあなたがそうのようなクラスのメタを設定することもできますあなたのforms.pyの下に「電話番号」を表示するようジャンゴ - 南http://south.aeracode.org/docs/ を使用したい場合があり、あなたのモデルに変更を加えるための

答えて

0

。これによりモデルに加えた変更は、あなたが電話と人の間のForeignKeyフォア関係を使用することをお勧めしますモデルの変化

class Meta: 
    model = Persons 
    exclude = ('user') 

に反映されます。ここでの行動をよりよく見てくださいhttps://docs.djangoproject.com/en/dev/ref/models/fields/#foreignkey

+0

ありがとうございますが、おそらく私はデータベースを変更できないという意味ではっきりしていませんでした。私は、自分のコントロール外の要因によってデータベースのスキーマが変更されてはならないことを意味しました。私が電話と人の間に外来キーを持つことができたなら、私は問題はないでしょう。 –