0

私のモデルは以下のようなものです:

class Manufacturers(models.Model):
    name = models.CharField()

class Phones(models.Model):
    manufacturer = models.ForeignKey(Manufacturers)
    name = models.CharField()

class Prices(models.Model):
    phone = models.ForeignKey(Phones)
    price = models.DecimalFeild()

そして私はそれらをadmin.pyに登録しました

私の問題は次のとおりです:djangoの管理インターフェースで、価格を追加すると、ドロップダウンリストから電話を選択できますが、電話が非常に多いので、最初にメーカーを選択してから、メーカーの電話から電話を選択します。どうすればこれを作ることができますか。どうもありがとう。

4

1 に答える 1

1

これの用語は「連鎖選択メニュー」です。

djangoには多くの実装があります。役に立つと思われるものはdjango-smart-selectsです。

django-smart-selects を使用して、モデルを作成する方法は次のとおりです。

class Manufacturers(models.Model):
    name = models.CharField()

class Phones(models.Model):
    manufacturer = models.ForeignKey(Manufacturers)
    name = models.CharField()

class Prices(models.Model):
    phone = ChainedForeignKey(
        Phone, 
        chained_field="manufacturer",
        chained_model_field="manufacturer", 
        show_all=False, 
        auto_choose=True
    )
    price = models.DecimalField()

とはいえ、これを最善の方法で実装しているかどうかは疑問です。

各電話の管理フォームの下に価格を表示する方がよい場合があります。したがって、価格レコードを作成してドロップダウンから電話を選択する代わりに、その電話のレコードに移動して価格レコードを追加します。InlineModelAdminに関する django のドキュメントを参照してください。

于 2010-12-08T17:53:21.373 に答える