2016-07-20 8 views
0

私はDjangoインラインフォームセットのハンドルを取得しようとしています。何が私をトリップしているのは、クエリーセットをformsetコンストラクタに渡そうとしていることです。Djangoインラインフォームセットのインスタンスとクエリセット

2つのシンプルなモデルを考えてみましょう。

class PickSheet(Model): 
    name = Models.CharField() 

class Pick(Model): 
    picksheet = Models.ForeignKey(PickSheet, related_name='picks') 
    team = Models.CharField() 
    points = Models.CharField() 

ここでFormSetを作成します。

PickFormSet = inlineformset_factory(PickSheet, Pick, max_num=5, extra=0, fields=['team', 'points']) 

データベースには、ピックシートが2つ作成されています。

私はformsetを作成するときにinstance =を使用すると、期待される2つのフォームが得られます。

私がqueryset =を使用してformsetを作成すると、私はゼロフォームを取得します。

qs = PickSheet.objects.filter(id=3) 
formset = PickFormSet(queryset=qs) 
print(formset.management_form) 

何が起こっているのですか? PickSheet.objects.filter(id = 3)はPickSheet.objects.get(id = 3)と同じですか? PickSheet.objects.filter(id=3)リストとを返すあるので

答えて

0

PickSheet.objects.filter(id=3)PickSheet.objects.get(id=3)と等価ではない)オブジェクトのインスタンスを返します。