フォームセットを使用して表示される Django オートフィールドは、デフォルトで非表示になっています。それを示す最良の方法は何でしょうか?
現時点では、モデルは次のように宣言されています。
class MyModel:
locid = models.AutoField(primary_key=True)
...
これを Django フォームセットを使用してレンダリングすると、
class MyModelForm(ModelForm):
class Meta:
model = MyModel
fields = ('locid', 'name')
ページに次のように表示されます。
<input id="id_form-0-locid" type="hidden" value="707" name="form-0-locid"/>
ありがとう。
編集
私はこのようなフォームセットを作成します -
LocFormSet = modelformset_factory(MyModel)
pformset = LocFormSet(request.POST, request.FILES, queryset=MyModel.objects.order_by('name'))
2 回目の編集
そこで定義したカスタムフォームクラスを使用していないように見えるので、質問を少し変更する必要があります..
カスタム フォーム (隠しフィールドを表示する) からフォームセットを作成し、カスタム クエリセットを使用するにはどうすればよいですか?
現時点では、BaseModelFormSet クラスから継承してカスタム クエリ セットを使用するか、ModelForm クラスを使用してフォームにカスタム フィールドを追加することができます。フォームセットで両方を行う方法はありますか?
3 回目の編集
今使っている、
class MyModelForm(ModelForm):
def __init__(self, *args, **kwargs):
super(MyModelForm, self).__init__(*args, **kwargs)
locid = forms.IntegerField(min_value = 1, required=True)
self.fields['locid'].widget.attrs["type"] = 'visible'
self.queryset = MyModel.objects.order_by('name')
class Meta:
model = MyModel
fields = ('locid', 'name')
LocFormSet = modelformset_factory(MyModel, form = MyModelForm)
pformset = LocFormSet()
しかし、これはまだありません
- ローシッドを表示
- 指定されたカスタム クエリを使用します。