特定のフィールドのカスタムクエリセットを持つDjango ModelFormインスタンス

StackOverflow https://stackoverflow.com/questions/1821289

  •  10-07-2019
  •  | 
  •  

質問

私は次のようなモデルを持っています:

class Bike(models.Model):
    made_at = models.ForeignKey(Factory)
    added_on = models.DateField(auto_add_now=True)

すべてのユーザーは多くの工場で働いている可能性があるため、ユーザープロファイルにはすべて ManyToManyField から Factory があります。

今、 Bike ModelForm を作成しますが、 made_at リストは、現在のユーザーが作業している工場のみで構成されるようにします。アイデアは、ユーザーが組み立てた自転車を追加し、その自転車が製造された工場を入力できるようにすることです。

どうすればいいですか?

役に立ちましたか?

解決

あなたの質問はこれの二重

S. Lott 回答問題を解決するためのチケットがあります。 彼は答えた:

  

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 = ...

     

これは、ビューで明示的に行われます。ハッキングはありません。

他のヒント

ビューでこのようなことを試してください

form  = BikeForm()
form.fields["made_at"].queryset = Factory.objects.filter(user__factory)

Factoryクエリセットを変更して、ユーザーが作業しているファクトリを識別するようにします。

今日は、次を使用する必要があります:

    form.base_fields['alumno_item'].queryset = AlumnoItem.objects.prefetch_related(
        'alumno',
        'alumno__estudiante',
        'alumno__estudiante__profile',
        'item'
    )
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top