У меня есть модель MyModel, которая содержит PK-locid, то есть AutoField.Создание modelformset из модели
Я хочу построить модель formset из этого, с некоторыми оговорками:
- QuerySet для formset должен быть обычай один (скажем, order_by («поле»)), а не все()
- Поскольку locid для MyModel является AutoField и, таким образом, скрыт по умолчанию, я хочу показать его пользователю.
Я не уверен, как это сделать. Я пробовал несколько подходов,
MyModelFormSet = modelformset_factory(MyModel, fields=('locid', 'name', 'dupof'))
Приведенное выше дает мне 3 поля, но местоположение скрыто.
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.
Кто-нибудь сделал что-то подобное раньше?
Редактировать
теперь я могу использовать пользовательский запрос, когда я экземпляр formset - но мне еще нужно, чтобы показать locid поле для пользователя, так как идентификатор имеет важное значение для использования приложения , Как мне это сделать? Есть ли способ переопределить поведение по умолчанию, скрывая PK, если его автополе?
Хм, потребность в такой форме, что я хочу, чтобы иметь возможность по крайней мере _show_ пользователю locid (даже если он скрыт и не может быть изменен). Что бы вы предложили как лучший способ сделать это? – viksit