モデルがあります。以下は Djangoは外部キーによるモデルの動的選択を使用します
class MyModel(models.Model):
CHOICES = (
(1, 'A1'),
(2, 'A2'),
(3, 'B1'),
(4, 'B2'),
)
category = models.IntegerField(choices=CHOICES, default=3)
has_plan = models.ForeignKey(Plan, on_delete=models.CASCADE)
は私の計画モデルである:この質問への懸念のためには、2つのフィールド1には、他のモデルプランへのForeignKeyであり、以下に示すように、他のがchoicefieldされる重要
class Plan(models.Model):
PLAN_CHOICES = [(1, "Individual"), (2, "Company")]
plan_name = models.IntegerField(choices=PLAN_CHOICES, default=2)
plan_validity = models.IntegerField(default=180, help_text="Days after plan expires")
私はCHOICES
を更新したいですhas_plan
の選択に応じて、MyModel
のcategory
フィールドで利用できるようになります。 has_plan
がPlan
を指している場合は、plan_name
のオブジェクトを考慮してください。私は両方ので、私はビューと管理のためにそれを処理する必要が
CHOICES = (
(1, 'A1'),
(2, 'A2'),
(3, 'A3'),
(4, 'B1'),
(5, 'B2'),
)
私は、フォームフィールドの助けを借りて、ビューでこれを達成することができますが、その場合には:(2、以下「当社」)は、その後CHOICES
に更新されるべきですこれを達成するためのより簡単でより簡単な方法を探しています。
モデルでclean()
メソッドでエラーを発生させることができますが、例外を発生させる代わりにCHOICES
を更新したいと思います。
更新:
最初のエントリの作成は私がマルチパートフォームを設定し、作成するためのソリューションを実現しますが、編集のためにDjangoの管理、カスタムビューで、私が対処しなければならないと思われているが両方とも別々に。 これを行うのではなく、私はそれを一度更新できるので、djangoの管理者ビューまたはカスタムビューの作成と編集のために、単一のメソッドをオーバーライドする必要があります。
フロントエンドでhas_planを選択していますか?正しい場合は、jqueryまたはjavascriptを使用して選択ボックスのオプションを更新します。 –
でも、私はdjangoのデフォルトの管理ビューでそれを処理することもできませんし、私もそれに取り組まなければならないので、何とか私が変更/更新できる場合は、ビューと管理の両方を処理する必要はありません別に – Gahan
私の意見では、あなたはそれをすることはできません。しかし、私は確信していない、インターネットで検索します。 –