从 Django ModelForm 中动态排除字段

     2023-02-24     51

关键词:

【中文标题】从 Django ModelForm 中动态排除字段【英文标题】:Dynamically excluding field from Django ModelForm 【发布时间】:2018-11-08 07:38:43 【问题描述】:

我想以编程方式排除表单中的一个字段。 目前我有这个:

class RandomForm(BaseForm):
    def __init__(self, *args, **kwargs):

        # This doesn't work
        if kwargs["instance"] is None:
            self._meta.exclude = ("active",)

        super(ServiceForm, self).__init__(*args, **kwargs)

        # This doesn't work either
        if kwargs["instance"] is None:
            self._meta.exclude = ("active",)

    class Meta:
        model = models.Service
        fields = (...some fields...)

如何仅在创建新模型时排除 active 字段?

【问题讨论】:

只是澄清一下:不工作意味着即使self._meta.exclude = ("active",) 行被执行,该字段仍然在表单中出现?还是您遇到错误? 这只是一个错字还是RandomForm真的从ServiceForm调用了超级方法? @Ralf 确实。 “不起作用”意味着该字段不断显示。另外,是的,这是一个错字。 【参考方案1】:

你可以这样解决:

class RandomForm(ModelForm):
    def __init__(self, *args, **kwargs):
        super(RandomForm, self).__init__(*args, **kwargs)
        if not self.instance:
            self.fields.pop('active')

    class Meta:
        model = models.Service
        fields = (...some fields...)

【讨论】:

这将覆盖我模型中的verbose_name、默认值等。 @alexandernst 我没有机会测试它,但试试if not self.instance: self.fields.pop('active')。您还应该将active 添加到元的字段中。【参考方案2】:

Django ModelForm 提供exclude 属性。你试过吗?

class RandomForm(ModelForm):

    class Meta:
        model = models.Service
        exclude = ['is_active']

【讨论】:

没有 dv 但我认为 OP 意味着“动态地”取决于某些属性(例如实例是否已经存在),表单应该以不同的方式呈现,所以我们可以 重用 相同的表单,但会显示不同的字段。

Django Modelform(带有排除字段)

】DjangoModelform(带有排除字段)【英文标题】:DjangoModelform(withexcludedfield)【发布时间】:2011-08-0801:00:12【问题描述】:我有一个样本表格:classAdminDiscountForm(ModelForm):classMeta:model=Discountexclude=(\'company\',)它指向的模型是:classDiscoun... 查看详情

动态更新 ModelForm 的 Meta 类

】动态更新ModelForm的Meta类【英文标题】:DynamicallyupdateModelForm\'sMetaclass【发布时间】:2010-09-2218:44:21【问题描述】:我希望从我的视图中动态更新ModelForm的内联Meta类。虽然这段代码似乎更新了Meta类中的排除列表,但as_p()、as_ul()... 查看详情

使用 Django,如何在模板中动态设置 ModelForm 字段值?

】使用Django,如何在模板中动态设置ModelForm字段值?【英文标题】:UsingDjango,howdoIsetaModelFormfieldvaluedynamicallyinthetemplate?【发布时间】:2021-01-2722:31:43【问题描述】:我正在尝试利用复选框字段为用户选择的收藏夹创建模型实例。... 查看详情

从动态 ModelForm 中删除字段

】从动态ModelForm中删除字段【英文标题】:RemovingafieldsfromadynamicModelForm【发布时间】:2011-01-3116:04:58【问题描述】:在ModelForm中,我必须测试用户权限以让他们填写正确的字段:定义如下:classTitleForm(ModelForm):def__init__(self,user,*ar... 查看详情

Django如何从ModelForm获取记录ID

】Django如何从ModelForm获取记录ID【英文标题】:DjangohowtogetrecordidfromModelForm【发布时间】:2018-03-2618:09:51【问题描述】:我已经为此苦苦思索了好几个星期,但我决心让ModelForm工作!当您使用从ModelForm接收的数据处理POST时,我知... 查看详情

从 Django 中基于类的通用视图将 request.user 对象发送到 ModelForm

】从Django中基于类的通用视图将request.user对象发送到ModelForm【英文标题】:Sendingrequest.userobjecttoModelFormfromclassbasedgenericviewinDjango【发布时间】:2011-08-1322:55:50【问题描述】:因此,我的目标是能够在我的ModelForm中过滤ModelChoiceFiel... 查看详情

Django 将额外字段添加到从模型生成的 ModelForm

】Django将额外字段添加到从模型生成的ModelForm【英文标题】:DjangoaddextrafieldtoaModelFormgeneratedfromaModel【发布时间】:2012-11-1302:00:34【问题描述】:我必须从模型生成一个FormSet,但我需要在每个表单中插入一个“额外值”。具体来... 查看详情

django之modelform组件

Django之ModelForm组件 ModelForma.classMeta:model,#对应Model的fields=None,#字段exclude=None,#排除字段labels=None,#提示信息help_texts=None,#帮助提示信息widgets=None,#自定义插件error_messages=None,#自定义错误信息(整体错误信息fromdjango.co 查看详情

django中的modelform和modelfoemset(代码片段)

一.ModelForm  ModelForm是根据Model来定制的Form二.ModelForm的创建fromdjangoimportformsfromappimportmodelsclassMyModelForm(forms.ModelForm):classMeta:model=models.Bookfields="__all__"    labels=        "title":"书名",        "price":"价格" ... 查看详情

Django ModelAdmin 从 ModelForm 获取查询集

】DjangoModelAdmin从ModelForm获取查询集【英文标题】:DjangoModelAdmingetquerysetfromModelForm【发布时间】:2015-03-2015:12:25【问题描述】:我正在使用ModelForm从模型创建表单,以便在我网站的各个地方使用。该表单有一个外键字段,需要根... 查看详情

ImageField() 不在 ModelForm 中保存图像 - Django/Python

】ImageField()不在ModelForm中保存图像-Django/Python【英文标题】:ImageField()notsavingimagesinModelForm-Django/Python【发布时间】:2015-05-2403:08:21【问题描述】:当我尝试从我的表单上传图片时,一切都在处理,但没有保存图片。有人知道为什... 查看详情

Django 从所有查询中排除字段

】Django从所有查询中排除字段【英文标题】:Djangoexcludefieldfromallqueries【发布时间】:2020-02-1407:21:04【问题描述】:我在Heroku上运行具有零停机时间功能的Django。这意味着在部署期间,同一数据库上运行了两个版本的代码(旧的... 查看详情

Django ModelForm 不保存数据

】DjangoModelForm不保存数据【英文标题】:DjangoModelFormnotsavingdata【发布时间】:2014-05-1521:44:06【问题描述】:我尝试了以下帖子的解决方案:SavingdatafromModelForm:没用ModelFormdatanotsavingdjango:没用。我正在尝试将数据从ModelForm保存... 查看详情

Django:带有条件的ModelForm

】Django:带有条件的ModelForm【英文标题】:Django:ModelFormwithconditions【发布时间】:2017-08-1712:07:55【问题描述】:我正在尝试创建一个表单变量。由于默认玩家的级别为0,他可以更改名称。等到他1级的时候,就可以改名字和头像... 查看详情

Django - 具有从 ForeignKey 属性派生的字段的 ModelForm

】Django-具有从ForeignKey属性派生的字段的ModelForm【英文标题】:Django-ModelFormwithfieldsderivedfromForeignKeyattributes【发布时间】:2014-06-2118:59:42【问题描述】:考虑以下模型classBook(models.Model):name=models.CharField(max_length=100)author=models.Forei 查看详情

在 Django REST 框架序列化程序中动态排除或包含字段

】在DjangoREST框架序列化程序中动态排除或包含字段【英文标题】:DynamicallyexcludeorincludeafieldinDjangoRESTframeworkserializer【发布时间】:2015-03-1204:49:14【问题描述】:我在DjangoREST框架中有一个序列化器,定义如下:classQuestionSerializer(... 查看详情

从 Django REST Swagger 中排除 URL

】从DjangoRESTSwagger中排除URL【英文标题】:ExcludeURLsfromDjangoRESTSwagger【发布时间】:2014-06-0910:20:57【问题描述】:我想从我的RESTAPI文档中排除一些URL。我正在使用DjangoRESTSwagger,而我能找到的唯一文档(https://github.com/marcgibbons/django... 查看详情

Django Imagefield 无法通过 ModelForm 正常工作

】DjangoImagefield无法通过ModelForm正常工作【英文标题】:DjangoImagefieldnotworkingproperlyviaModelForm【发布时间】:2010-10-1509:52:15【问题描述】:我确定我在做一些很明显很愚蠢的事情,但我已经尝试了几个小时了,但没有任何反应。我... 查看详情