Django创建ModelForm,其中隐藏了OneToOneField,但必填

安德烈·洪德拉里(Andreihondrari)

所以我有一个模型:

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})

我的something.html模板:

{% for field in form %}
    {{ field }}
{% endfor %}

我的问题是:

  • 我需要在渲染模板时隐藏my_field字段(但从后端),这意味着当我在模板中执行for on表单时,它不应该在已设置的字段中包含my_field字段
  • 这是一个创建表单,这意味着我没有现有实例
  • 在后端,my_field是必需的,因此在执行POST时,从某个位置检索my_field的实例,无论在哪里都无所谓,然后将其添加到可见表单的数据中。此后,该表格应该是有效的,并且可以保存到数据库中

因此,基本问题是:如何使必填字段变为隐藏但可保存?

罗汉

此文档中,它是非常常见的用例

总而言之,您可以从表单中排除该字段,并在从某个位置检索到该字段后将其保存。

将代码更新为

class MyThingForm(forms.ModelForm):
    class Meta:
        model = MyThing
        exclude = ['my_field', ]

class MyThingView(views.TemplateView):

    ...
    def post(self, request, *args, **kwargs):

        form = MyThingForm(request.POST)
        #retrieved_my_field = retrieve the field

        if form.is_valid():
            inst = form.save(commit=False)
            inst.my_field = retrieved_my_field
            inst.save()
            return HttpResponseRedirect(...somewhere else)

        return render(self.template_name, {'form': form})

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django创建了ModelForm,其中隐藏了OneToOneField,但是必需的

来自分类Dev

Django:具有OneToOneField的ModelForm

来自分类Dev

Django中具有OneToOneField的ModelForm

来自分类Dev

django modelform属性隐藏字段

来自分类Dev

如何在Django modelform中隐藏字段?

来自分类Dev

在Django中使用ModelForm创建UpdateForm

来自分类Dev

如何为抽象模型创建Django ModelForm?

来自分类Dev

django:基于 ModelForm 字段创建 HTML 警报?

来自分类Dev

Django OneToOneField Unicode方法

来自分类Dev

在Django中使用OneToOneField

来自分类Dev

Django访问OneToOneField

来自分类Dev

Django的:OneToOneField-RelatedObjectDoesNotExist

来自分类Dev

Django访问OneToOneField

来自分类Dev

在Django中使用OneToOneField

来自分类Dev

Django的OneToOneField或ForeignKey?

来自分类Dev

Django OneToOneField和信号

来自分类Dev

OneToOneField 不工作 django

来自分类Dev

如何阻止Django ModelForm为外键创建选择

来自分类Dev

Django ModelForm使用不同的ForeignKey创建多个实例

来自分类Dev

验证 Django 2 中动态创建的 ModelForm 字段

来自分类Dev

Django模型OneToOneField,无需创建其他_id数据库列

来自分类Dev

如何使用 DRF 序列化器创建包含必需 OneToOneField 的 Django 模型实例

来自分类Dev

创建新对象时的Django隐藏字段

来自分类Dev

Django onetoonefield不保存实例

来自分类Dev

Django OneToOneField,ManyToManyField,外键

来自分类Dev

Django从ManyToManyField反向查找OneToOneField

来自分类Dev

Django onetoonefield不保存实例

来自分类Dev

如何更新django'user的OneToOneField

来自分类Dev

Django AuthenticationForm必填字段