2016-08-10 2 views
1

におけるジェネリックのForeignKeyを避けるために。私もPeopleCarモデルを持っていて、1つ以上の画像を持っているかもしれません。つまり、特定の画像はCarまたはPeopleモデルのオブジェクトに属することができます。最良の方法は、私は、画像への別のリンクが含まれている<code>Picture</code>モデルを持っているジャンゴ

私はForeignKeyをしようが、フィールド(car_idまたはpeople_id)の一つが空になります。

私は抽象モデルを作成し、私が知っているForeignKey

Pictureから最後の解決策は、 genericForeignKeyですが、それは、このような簡単な作業のために複雑に思えることはできません。

は、問題を解決する最良の方法はありますか?

+0

あなたは、一般的な外部キーがあまりにも複雑であると言うになり何を持っているAlbumと呼ばれますか?これはまさにそのためのものであり、その背後にある論理を理解すればセットアップするのは難しくありません。 – solarissmoke

+0

@solarissmoke「Djangoの2つのスクープ」からの引用: 「モデル間の索引付けの不足による照会速度の低下 表としてのデータ破損の危険性は、存在しないレコードに対する別のものを参照する可能性があります。 –

答えて

0

私はこのような問題を解決:私は別のモデルを作成した はid

class People(models.Model): 
    name = models.CharField(max_length=100) 
    album = models.OneToOneField(Album) 

class Car(models.Model): 
    horse_power = models.IntegerField() 
    ablum = models.OneToOneField(Album) 

class Picture(models.Model): 
    title = models.CharField(max_length=100) 
    album = models.ForeignKey(Album) 
関連する問題