2009-11-30 6 views
19

私は、次のとは異なり、モデルではないがありますジャンゴのModelFormインスタンス

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

すべてのユーザーは、工場数で動作可能性があるため、ユーザープロファイルのすべてがFactoryManyToManyFieldを持っています。

は、今私はBikeためModelFormを構築したいが、私はmade_atリストは現在のユーザが所属する時のみの工場で構成されたいです。ユーザーは、組み立てた自転車を追加し、自転車が製造された工場を入力できるようにする必要があります。

どうすればよいですか?

+0

そして、あなたの質問は読みやすく、私は二重引用符を指したものよりも重要です。 – cethegeek

+0

@celopes:あなたはそれに関する情報源はありますか? –

+0

Nah ...私はそれが非難されようとしていたというコメントを削除しました。なんらかの理由で、私はそれがそうだったということを思い出しました。私はそれについてのチケットを読んだと思う...しかし、文書はそこにあり、ソースには非推奨の兆候はない。ただ私を無視する。 :-)それは 'auto_now_add' btwです。 – cethegeek

答えて

5

質問はdupe of thisかもしれません。

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

のForeignKeyは、選択肢がモデルのクエリセットですChoiceFieldあるdjango.forms.ModelChoiceField、で表されます。 ModelChoiceFieldのリファレンスを参照してください。

したがって、フィールドのクエリーセット属性にQuerySetを指定します。フォームがどのように構築されているかによって異なります。明示的なフォームを作成すると、直接名前のフィールドがあります。これは、ビューに明示的に行われているform.fields["rate"].queryset = ...

デフォルトのModelFormオブジェクトを取る場合

form.rate.queryset = Rate.objects.filter(company_id=the_company.id) 、。ハッキングはありません。

35

は、ユーザーがで働く工場を特定するように、工場出荷時のクエリセットを変更

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

ビューでこのような何かを試してみてください。

関連する問題