AutoFieldであるPK--locidを含むモデルMyModelがあります。
これからモデルフォームセットを作成したいのですが、いくつか注意点があります。
- フォームセットのクエリセットは、all()ではなくカスタムクエリセット(たとえば、order_by('field'))である必要があります。
- MyModelのlocidはAutoFieldであり、デフォルトで非表示になっているため、ユーザーに表示できるようにしたいと思います。
これを行う方法がわかりません。私は複数のアプローチを試しましたが、
MyModelFormSet = modelformset_factory(MyModel, fields=('locid', 'name', 'dupof'))
上記は私に3つのフィールドを与えますが、locidは隠されています。
class MyModelForm(ModelForm):
def __init__(self, *args, **kwargs):
super(MyModelForm, self).__init__(*args, **kwargs)
self.fields['locid'].widget.attrs["type"] = 'visible'
locid = forms.IntegerField(min_value = 1, required=True)
class Meta:
model = MyModel
fields = ('locid', 'name', 'dupof')
上記は私にManyToManyエラーを与えます。
誰かが以前にこのようなことをしたことがありますか?
編集2
フォームセットをインスタンス化するときにカスタムクエリを使用できるようになりましたが、IDはアプリケーションの使用にとって重要であるため、ユーザーにlocidフィールドを表示する必要があります。どうすればいいですか?オートフィールドの場合、PKを非表示にするデフォルトの動作をオーバーライドする方法はありますか?