我有一个模型 MyModel,它包含一个 PK - locid,即一个 AutoField。
我想从中构建一个模型表单集,但有一些注意事项:
- 表单集的查询集应该是自定义的(比如 order_by('field'))而不是 all()
- 由于 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
我现在可以在实例化表单集时使用自定义查询 - 但我仍然需要向用户显示 locid 字段,因为 id 对于应用程序的使用很重要。我该怎么做?如果它是自动字段,有没有办法覆盖隐藏 PK 的默认行为?