Скрытое поле, которое возвращает модель?Итак, идентификатор экземпляра модели?
Виджет forms.HiddenInput
должен помочь, будь то поле FK или CharField, в которое вы поместили идентификатор экземпляра модели.
class MyForm(forms.Form):
hidden_2 = forms.CharField(widget=forms.HiddenInput())
hidden_css = forms.CharField(widget=forms.MostWidgets(attrs={'style': 'display:none;'}))
Полагаю, самый быстрыйспособ получить эту работу -
class MyForm(forms.Form):
model_instance = forms.ModelChoiceField(queryset=MyModel.objects.all(), widget=forms.HiddenInput())
form = MyForm({'model_instance': '1'})
form.cleaned_data['model_instance']
Но мне не нравится идея предоставления MyModel.objects.all (), если вы все равно собираетесь указать один элемент.
Кажется, чтобы избежать такого поведения, вам придется переопределить форму __init__
с помощью меньшего QuerySet
.
Мне кажется, я предпочитаю старомодный способ:
class MyForm(forms.Form):
model_instance = forms.CharField(widget=forms.HiddenInput())
def clean_model_instance(self):
data = self.cleaned_data['model_instance']
if not data:
raise forms.ValidationError()
try:
instance = MyModel.objects.get(id=data)
except MyModel.DoesNotExist:
raise forms.ValidationError()
return instance