DIY アプリケーション (Django 1.5) に取り組んでいますが、障害が発生しました。関連する主なモデルはGuide
、、、、Tool
です。ガイドは多くのツールとアイテムを持つことができ、ツールまたはアイテムは多くのガイドに属することができます。同じことがステップにも当てはまります。多くのツールとアイテムを持つことができ、ツールやアイテムは多くのステップに属することができます。ガイドには多くのステップがあり、ステップはガイドに属します。Item
Step
多対多のアイテムをガイドする
多対多ツールのガイド
一対多のステップをガイドする
多対多アイテムのステップ
ステップ多対多ツール
通行止め...
ガイド レベルでは、ツールとアイテムのオプションを無制限にしたいと考えています。しかし、ステップ レベルでは、ツールとアイテムのオプションを、それが属するガイドに割り当てられているものに限定したいと考えています。基本的に、ステップを作成/編集するときは、ガイドから使用できるすべてのツールとアイテムのチェックボックスをリストしたいと考えています。ユーザーは、現在のステップに必要なものを選択します。各ステップには、ツールとアイテムのさまざまな組み合わせがあります (したがって、チェックボックスが必要です)。
ModelMultipleChoiceField
Step の ModelForm クラスのを発見しました。そこでクエリセットを指定できます。 しかし、ガイド モデルのインスタンスにアクセスしてそのツールとアイテムを取得し、適切に選択を作成するにはどうすればよいでしょうか? ビューで行うのと同様のクエリを提供したいと思います...
Guide.objects.get(pk=n).tools.all()
Guide.objects.get(pk=n).items.all()
どうすればそれを達成できModelMultipleChoiceField
ますか?これを明確に説明できたことを願っています。
助けてくれてありがとう。
class Tool(models.Model):
name = models.CharField(max_length=100)
...
class Item(models.Model):
name = models.CharField(max_length=100)
...
class Guide(models.Model):
models.CharField(max_length=100)
description = models.CharField(max_length=500)
tools = models.ManyToManyField(Tool, null=True, blank=True)
items = models.ManyToManyField(Item, null=True, blank=True)
...
class Step(models.Model):
title = models.CharField(max_length=100)
body = models.TextField()
guide = models.ForeignKey(Guide)
tools = models.ManyToManyField(Tool, null=True, blank=True)
items = models.ManyToManyField(Item, null=True, blank=True)
編集: 5/2__init__
さらに読んだ後、 のメソッド
をオーバーライドする必要があるようです。 へModelMultipleChoiceField
の参照を取得し、 のself.instance
ようなクエリを作成できるようにしself.instance.guide.tools.all()
ますself.instance.guide.items.all()
。そして、 を介してフィールドを作成しますfields['field_name']
。
私は今仕事をしているので、今夜遅くまでこれを試すことができません. 調査結果を報告します。