【发布时间】:2014-09-23 02:56:16
【问题描述】:
所以我有一个模型:
class MyThing(models.Model):
my_field = OneToOneField(SomeOtherModel)
... other fields
表格:
class MyThingForm(forms.ModelForm):
class Meta:
model = MyThing
一个视图:
class MyThingView(views.TemplateView):
template_name = 'thing.html'
def get(self, request, *args, **kwargs):
form = MyThingForm()
return render(self.template_name, {'form': form})
def post(self, request, *args, **kwargs):
... retrieve some_instance
request.POST['my_field'] = some_instance
form = MyThingForm(request.POST)
if form.is_valid():
form.save()
return HttpResponseRedirect(...somewhere else)
return render(self.template_name, {'form': form})
我的thing.html 模板:
{% for field in form %}
{{ field }}
{% endfor %}
我的问题是:
- 我需要在渲染模板时隐藏 my_field 字段(但从后端),这意味着当我在 form 上执行 for 时> 在模板中,它不应该已经在字段中设置了 my_field 字段
- 这是一个创建表单,这意味着我没有现有的实例
- 在后端,my_field 是必需的,因此在执行 POST 时,我会从某处检索 my_field 的实例,无论在哪里,并将其添加到可见表单的数据中。在此之后,表单应该是有效的并且可以保存到数据库中
所以基本的问题是:如何使必填字段隐藏但可保存?
【问题讨论】:
标签: django django-models django-forms django-templates django-views