[英]How to hide a field in django modelform?
例如:
class TestModel(models.Model):
ref1 = models.ForeignKey(RefModel)
text1 = models.TextField()
class TestModelForm(ModelForm):
class Meta:
model = TestModel
fields = ('text1')
我只允許用戶輸入text1字段,但是當我重新定義我的視圖的post 方法時,我還想設置ref1值,我該怎么做?
我希望我可以讓 TestModelForm 有 ref1 字段但不要讓用戶修改它,然后我可以在 post 方法中修改 request.POSt 的值,並將其傳遞給 TestModelForm,這可能嗎?
您可以將HiddenInput
用作ref1
小部件:
class TestModelForm(ModelForm):
class Meta:
model = TestModel
widgets = {
'ref1': forms.HiddenInput(),
}
另一種選擇是保存commit
參數等於False
表單。 這樣,您可以僅在表單中包含可見字段,然后使用所需數據更新模型實例:
def some_view(request):
# ...
if request.method == 'POST':
form = TestModelForm(request.POST)
if form.is_valid():
instance = form.save(commit=False)
ref = get_ref_according_to_url()
instance.ref1 = ref
instance.save()
# ...
注意:我正在使用(Django 3.2)
我嘗試添加一個小部件,但它對我不起作用,但我在不使用小部件的情況下以更簡單的方式解決了它。
class TestModelForm(ModelForm):
ref1 = forms.CharField (widget = forms.Textarea(
attrs = {
'hidden': '',
}
))
我希望這可以幫助您或其他人;)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.