2

Django では、モデル間に次の動的な関係を作成する方法はありますか?

 class ClothingMale(models.Model):
     # male specific fields

 class ClothingFemale(models.Model):
     # female specific fields

 class Person(models.Model):
    gender = models.IntegerField(max_length=2, choices=GENDER_CHOICES, blank=True)
    clothes = models.ForeignKey(???)

Person に ModelForm を使用しています。フォーム内の服装フィールドは、選択した性別に応じて動的に変化する必要があります。私は GenericForeignKeys を認識していますが、これを解決するためのより良い方法があるかどうか疑問に思っていましたか?

4

2 に答える 2

2

私見それはDB設計の問題です。私はスーパークラスに行き、それをandPersonClothingでサブクラス化します。スーパークラスはDjango抽象基本クラスになります。いくつかの共通情報を他の多くのモデルに入れたい場合に役立つ特定のクラス。MalePersonClothingFemalePersonClothingPersonClothing

これを行うには、モデルのmetaで次のオプションを指定するだけです:

class Meta:
    abstract = True
于 2012-10-01T12:49:16.193 に答える
0

1 つのオプションは、 を使用することGenericForeignKeyです。もちろん、これには int の欠点があります。たとえばfilter()GenericForeignKey

もう 1 つのオプションは、モデルの継承を使用することです。これにもかなりの落とし穴があります。

于 2012-10-01T12:42:03.283 に答える