私は次のように違いないモデルを持っています:
class Bike(models.Model):
made_at = models.ForeignKey(Factory)
added_on = models.DateField(auto_add_now=True)
すべてのユーザーはいくつかの工場で働いている可能性があるため、すべてのユーザープロファイルには ManyToManyField
に Factory
.
今、私は構築したい ModelForm
ために Bike
しかし私は欲しい made_at
現在のユーザーが勤務している工場のみで構成されるリスト。アイデアは、ユーザーが自分で組み立てた自転車を追加して、どの工場で自転車を製造したのかを入力できるようにすることです。
それ、どうやったら出来るの?
回答:
回答№1は6あなたは質問かもしれません これのデュープ.
S.ロット"s 回答 あなたの問題を解決するためのチケットがあります。 彼は答えました:
ForeignKeyはdjango.forms.ModelChoiceFieldで表されます。これは、選択肢がモデルQuerySetであるChoiceFieldです。 ModelChoiceFieldのリファレンスを参照してください。
そのため、フィールドのqueryset属性にQuerySetを指定します。フォームの作成方法によって異なります。明示的なフォームを作成する場合は、直接名前を付けたフィールドがあります。
form.rate.queryset = Rate.objects.filter(company_id=the_company.id)
デフォルトのModelFormオブジェクトを使うと、form.fields["rate"].queryset = ...
これはビュー内で明示的に行われます。ハッキングはありません。
回答№2の38
ビューでこのようなことを試してください
form = BikeForm()
form.fields["made_at"].queryset = Factory.objects.filter(user__factory)
ユーザーが作業しているファクトリを識別するようにFactoryクエリセットを変更します。
回答№3の場合は0
今日では、あなたが使用する必要があります:
form.base_fields["alumno_item"].queryset = AlumnoItem.objects.prefetch_related(
"alumno",
"alumno__estudiante",
"alumno__estudiante__profile",
"item"
)