Yuj*_*ita 29
一个返回模型的隐藏字段?那么一个模型实例ID?
该forms.HiddenInput插件应该做的伎俩,无论是在FK字段或CharField你把一个模型实例ID.
class MyForm(forms.Form):
hidden_2 = forms.CharField(widget=forms.HiddenInput())
hidden_css = forms.CharField(widget=forms.MostWidgets(attrs={'style': 'display:none;'}))
Run Code Online (Sandbox Code Playgroud)
我认为让这项工作最快捷的方法是
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']
Run Code Online (Sandbox Code Playgroud)
但是,如果您要指定一个项目,我不喜欢提供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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28502 次 |
| 最近记录: |