Trường ẩn trả về mô hình? Vậy một ID cá thể mô hình?
Các widget forms.HiddenInput
nên làm các trick, cho dù trên một sân FK hoặc CharField bạn đặt một ID mô hình ví dụ trong.
class MyForm(forms.Form):
hidden_2 = forms.CharField(widget=forms.HiddenInput())
hidden_css = forms.CharField(widget=forms.MostWidgets(attrs={'style': 'display:none;'}))
Tôi cho rằng cách nhanh nhất để làm việc này là
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']
Nhưng tôi không thích ý tưởng cung cấp MyModel.objects.all() nếu bạn định chỉ định một mục anyways.
Dường như để tránh hành vi đó, bạn phải ghi đè biểu mẫu __init__
với số nhỏ hơn QuerySet
.
Tôi nghĩ rằng tôi thích theo cách cũ thời:
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
Nguồn
2011-01-14 00:29:55
Đừng nghĩ 'ForeignKey' là một lĩnh vực hình thức có giá trị ... đó là một lĩnh vực mô hình. Tôi muốn nó trả về một thể hiện mô hình chứ không phải là một số nguyên (khi tôi lấy nó sau này với 'form.cleaned_data ['field']') – mpen
Haha, bạn hoàn toàn đúng .. xin lỗi về điều đó :) –
forms.MostWidgets ? có nghĩa là hầu hết các widget có sẵn? – fanny