首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django admin自定义表单提交强制从下拉列表中选择操作

Django admin是Django框架提供的一个强大的后台管理界面,可以方便地管理和操作数据库中的数据。在Django admin中,我们可以通过自定义表单来实现对数据的提交操作进行限制,强制用户从下拉列表中选择操作。

自定义表单提交强制从下拉列表中选择操作的步骤如下:

  1. 创建一个自定义的表单类,继承自Django admin中的forms.ModelForm类。在表单类中,我们可以定义各种字段和验证规则。
  2. 在表单类中,使用Django的ChoiceField字段来定义一个下拉列表字段,用于用户选择操作。可以通过choices参数来指定下拉列表中的选项。
  3. 在表单类中,重写clean方法,对表单数据进行验证和处理。在clean方法中,可以通过self.cleaned_data来获取用户提交的表单数据。
  4. 在Django admin中注册自定义的表单类,将其与相应的模型关联起来。可以通过重写ModelAdmin类中的form属性来指定使用的表单类。

下面是一个示例代码:

代码语言:txt
复制
from django import forms
from django.contrib import admin
from .models import YourModel

class YourModelForm(forms.ModelForm):
    CHOICES = (
        ('option1', 'Option 1'),
        ('option2', 'Option 2'),
        ('option3', 'Option 3'),
    )
    operation = forms.ChoiceField(choices=CHOICES)

    def clean(self):
        cleaned_data = super().clean()
        operation = cleaned_data.get('operation')

        if not operation:
            raise forms.ValidationError('Please select an operation.')

        return cleaned_data

class YourModelAdmin(admin.ModelAdmin):
    form = YourModelForm

admin.site.register(YourModel, YourModelAdmin)

在上面的示例中,我们创建了一个名为YourModel的模型,并创建了一个名为YourModelForm的自定义表单类。在表单类中,我们定义了一个名为operation的下拉列表字段,用户需要从中选择操作。在clean方法中,我们验证了用户是否选择了操作,如果没有选择,则抛出一个ValidationError。

最后,我们将YourModel和YourModelAdmin进行注册,使其在Django admin中显示和管理。

推荐的腾讯云相关产品:腾讯云服务器(https://cloud.tencent.com/product/cvm)和腾讯云数据库(https://cloud.tencent.com/product/cdb)。腾讯云服务器提供了高性能、可扩展的云服务器实例,适用于各种应用场景。腾讯云数据库提供了稳定可靠的云数据库服务,支持多种数据库引擎,满足不同业务需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Django 学习笔记之表单

表单中会根据页面显示需求,采用不同的表单元素来呈现,比如:文本域(textarea)、下拉列表、单选框(radio-buttons)、复选框(checkboxes)等等 它可能长得这个样子 表单使用标签...表单元素 --> action 属性:指定表单数据提交到哪个页面。例子提交到 search.html 页面,这个也会跳转到 search.html 页面。...如果你想把数据提交到原来的页面,action 的值为空就行,即 action="" method 属性:规定提交表单时所用的 HTTP 方法,一般选择 GET 或者 POST。...譬如:Model 的某些属性我不需要显示在页面上,或数据处理方式比较复杂,这个时候你就需要自定义 Form。自定义 Form 是直接继承 Form。..." /> 我在 url.py 定义表单的路径是: from django.contrib import admin from django.urls

2.6K30

37.Django1.11.6文档

当我们实例化表单时,我们可以选择让它为空还是预先填充它,例如使用: 来自一个保存后的模型实例的数据(例如用于编辑的管理表单) 我们其它地方获得的数据 从前面一个HTML 表单提交过来的数据 获取HTML...验证给定值列表的每个值都存在于选择列表。...验证表单集中的表单Django 提供了两种方法去检查表单能够提交的最大数和最小数, 应用如果需要更多的关于提交数量的自定义验证逻辑,应该使用自定义表单击验证 validate_max I如果max_num...如果您查看管理员的任何更改列表,您将看到此功能在操作Django附带所有型号的“删除所选对象”操作。 ...多数情况下,你会按需使用这一方法,来超类列表移除操作

24.3K80
  • Python Django开发 经验技巧总结(一)

    文章目录 1.前后台的数据传递 2.与数据库交互并返回数据的几种比较常用的方法 3.一个表单对应多个按钮解决方案 4.HTML表单控件及操作 5.消息框架 message使用 6.日期和时间DateField...#del功能实现 return render(request, 'xxx.html', yyy) 4.HTML表单控件及操作 在HTML中表单的书写一般为: )的内容被提交到后端。...需要注意的是,设置该参数为true时,并不简单地意味着字段的默认值为当前时间,而是指字段会被“强制”更新到当前时间,你无法程序手动为字段赋值;如果使用django自带的admin管理器,那么该字段在admin...与auto_now类似,auto_now_add也具有强制性,一旦被设置为True,就无法在程序手动为字段赋值,在admin字段也会成为只读的。

    1.4K10

    Python自动化开发学习20-Djan

    对话框里填入数值,但是部门要用下拉列表来做。下拉列表的选项需要处理函数先去获取 depts1 = models.Dept.objects.all() ,然后返回给页面。 <!...使用serialize() 方法可以直接把form表单里的所有的name和对应的值一次获取到。 例子还有个问题,就是还要提交一个uid,这个uid不在表单里。这里有两个方法。...serialize()方法把表单里的内容序列化成了字符串,如例子那样可以再追加上我们的字符串 外键操作-多对多 首先更新我们的表结构,我们已经有人员信息表(UserInfo)和部门表(Dept)。...如果想加额外的数据就只能用自定义关系表来创建额外的字段了。 设置关联关系 ORM都是通过类来进行数据库操作的。自定义关系表,直接可以获得结合表的类,直接操作结合表就可以进行数据库操作了。...关联客户需要使用下拉列表,现在可以关联多个客户,所以要用复选的下拉列表(multiple),通过form提交到后台要获取值就需要用getlist来获取多个值。

    2.6K10

    Django教程(三)- Django表单Form1.Form 基本使用2.Form字段及插件3.通过Django表单Form来完成需求4.自定义验证验证规则

    1.Form 基本使用 django的Form组件有以下几个功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 2.Form字段及插件...注:需要PIL模块,pip install Pillow 以上两个字典使用时,需要注意两点: - form表单 enctype="multipart/form-data" - view函数 obj...{% widthratio 5 100 1 %} 上面的代码表示:5/100*1,返回0.05,只需要将第三个参数设置为1即可 ---- 3.通过Django表单Form来完成需求 1.根据用户填写表单的不同跳往不同的页面...九九乘法表 3.在网页上打印1-100之间的偶数 先了解下pythonmap函数 >>> map(str, range(5)) #对range(5)各项进行str操作 ['0',...在网页上打印1-100之间的偶数 4.自定义验证验证规则 方式1:在字段自定义validators设计正则匹配 from django.forms import Form from django.forms

    10.1K40

    django入门:Admin管理系统及表单(干货)

    这一部分将介绍 django 自带的后台管理系统,以及如何通过表单提交数据 django admin 后台管理系统 在后台管理系统注册创建的模型 from django.contrib import admin...from blog.models import Post, Category, Tag # 在应用目录下的 admin.py 文件,对创建的模型进行注册,可以一起用列表注册,也可以分开注册 admin.site.register...admin 主界面 当然,django 自带的 admin 管理系统不止那么点功能,接着我们通过定义一些参数,来定制 admin 界面 自定义 admin # 在使用后台管理的时候,可能需要自己定制...admin 管理界面 为了可以和用户进行交流,我们需要获取用户的一些评论之类的,所以我们需要通过表单让用户提交信息,接下来我们将了解下 django表单 django 表单 存在相应模型(POST...提交反馈错误 类似搜索的表单(GET) 1.创建表单视图 def search(request): # 获取到用户提交的搜索关键词,字典的键值同模版的 name 属性值 q = request.GET.get

    2.9K20

    Python:Django框架

    Form输出选项 :以表格形式加载表单元素 :以段落形式加载表单元素 :以列表形式加载表单元素 使用实例 在app中新建forms.py,并添加 from django import forms class...1)#多选框 sex5 = forms.ChoiceField(label='性别', choices=choices_item,initial=1,widget=forms.Select)#下拉列表...objects.filter(**kwargs) 数据库的取得匹配的结果,返回一个对象列表,如果记录不存在的话,它会返回[] 十三、Django-后台 应用注册 若要把app应用显示在后台管理...']#在列表页显示的条目 list_editable = ['icon'] #在列表页即可修改 利用django.utils.html转义实现图片预览 1.在model.py定义图片预览函数...中注册 ```python @admin.register(Article) class ArticleAdmin(admin.ModelAdmin): #设置要显示在后台列表的字段

    4.4K40

    35.Django2.0文档

    ,作者的邮箱地址允许输入一个空值  4.自定义字段标签      在编辑页面,每个字段的标签都是模块的字段名称生成的。...比如说:在这个列表可以看到作者的邮箱地址,为了达到这个目的,我们将为Author模块定义一个ModelAdmin类。 这个类是自定义管理工具的关键,其中最基本的一件事情是允许你指定列表的字段。  ...解释一下代码: 我们新建了一个类AuthorAdmin,它是django.contrib.admin.ModelAdmin派生出来的子类,保存着一个类的自定义配置,以供管理工具使用。... 正如自定义列表那样,编辑表单多方面也能自定义。...首先,我们先自定义字段顺序。 默认地,表单的字段顺序是与模块定义是一致的。

    11.3K100

    Django 2.0 新特性 转

    django.contrib.auth用户认证 PBKDF2密码哈希默认的迭代次数36000增加到100000。...方法,支持PostGIS和SpatiaLite; 所有GeoJSON导入的GEOSGeometry拥有SRID集合; 添加OSMWidget.default_zoom属性,用于自定义地图的默认缩放级别...django.contrib.sitemaps站点地图 为GenericSitemap构造器增加protocol参数; Cache缓存 cache.set_many()现在返回一个列表,包含了插入失败的键值...DjangoTemplates引擎的第一个,而不是弹出ImproperlyConfigured错误; 自定义模版标签现在接收强制关键字参数; Tests测试 为LiveServerTestCase添加多线程支持...如果你需要为last_name保持30个字符的限制,可以如下使用自定义表单: from django.contrib.auth.forms import UserChangeForm class MyUserChangeForm

    2.6K20

    Django中使用下拉列表过滤HTML表格数据

    Django,你可以使用下拉列表(即选择框)来过滤HTML表格的数据。这通常涉及两个主要步骤:创建过滤表单和处理过滤逻辑。创建过滤表单首先,你需要创建一个表单,用于接收用户选择的过滤条件。...处理过滤逻辑并渲染HTML表格接下来,在视图中处理表单提交和过滤逻辑,然后在HTML模板渲染过滤后的数据。...具体来说,我们可以通过以下步骤实现下拉列表的动态变化:在 HTML 页面添加一个下拉列表,用于选择年份。在 HTML 页面添加一个下拉列表,用于选择月份。...在 HTML 页面添加一个下拉列表,用于选择供应商类型。在 JavaScript 代码,添加一个事件监听器,监听下拉列表的选项改变事件。...通过以上步骤,我们可以在Django实现使用下拉列表来过滤HTML表格数据的功能。如有更多问题咨询可以留言讨论。

    10910

    Django教程第1章 | 快速入门 | 基础知识

    简介 Django是Python主流的 Web开发框架,功能强大,是Python Web应用开发的第一选择。 使用 Django,您可以在几个小时内完成 Web 应用程序概念到启动的过程。...自动化 admin 界面: Django 自动生成管理后台,使得管理和操作数据库的过程变得非常简单。开发者可以轻松地创建、修改和删除数据库记录,而无需编写自定义的管理界面。...表单处理: Django 提供了强大的表单处理工具,使得用户输入的验证和处理变得更加简单。这对于开发 Web 表单和处理用户提交的数据非常有用。...manage.py migrate TestModel # 创建表结构 自定义表单 我们可以自定义管理页面,来取代默认的页面。...: 我们也可以自定义该页面的显示,比如在列表显示更多的栏目,只需要在 ContactAdmin 增加 list_display 属性: admin.py from django.contrib import

    27010

    Django 1.10文文档-第一个应用Part7-自定义管理站点

    自定义管理表单 通过admin.site.register(Question)注册了Question后,Django可以自动构建一个默认的表单。如果您需要自定义管理表单的外观和功能。...在这个表单,Question字段是一个select选择框,包含了当前数据库中所有的Question实例。Djangoadmin站点中,自动地将所有的外键关系展示为一个select框。...自定义修改列表 现在Question的管理页面看起来已经差不多了,下面来看看修改列表页面,也就是显示了所有question的页面,即下图这个页面: ?...修改列表自带分页功能,默认每页展示100条数据。 自定义管理站点外观 很明显,在每一个admin页面坐上顶端都显示“Django 管理”是感觉很荒诞,它仅仅是个占位文本。...注意任何Django管理站点的默认模板都可以重写。 想要重写一个模板文件,只需要做和重写base_site.html相同的操作就行——将它从默认的目录拷贝到你自定义的目录,然后修改它。

    3.6K60

    第 14 篇:交流的桥梁“评论功能”—— HelloDjango 系列教程

    注意这里注册的是 CommentsConfig 类,在 博客“裸奔”到“有皮肤”[1] 中曾经讲过如何对应用做一些初始化配置,例如让 blog 应用在 djangoadmin 后台显示中文名字。...既然已经创建了模型,我们就可以将它注册到 django admin 后台,方便管理员用户对评论进行管理,如何注册 admin 以及美化在 博客“裸奔”到“有皮肤”[4] 有过详细介绍,这里给出相关代码...我们知道每一个 URL 对应着一个 django 的视图函数,于是 django 调用这个视图函数,我们在视图函数写上处理用户通过表单提交上来的数据的代码,比如验证数据的合法性并且保存数据到数据库,...另外一种想法是使用自定义的模板标签,我们在 页面侧边栏:使用自定义模板标签[6] 详细介绍过如何自定义模板标签来渲染一个局部的 HTML 页面,这里我们使用自定义模板标签的方法,来渲染表单页面。...首先视图函数被 require_POST 装饰器装饰,装饰器的名字就可以看出,其作用是限制这个视图只能通过 POST 请求触发,因为创建评论需要用户通过表单提交的数据,而提交表单通常都是限定为 POST

    1.7K20

    xadmin使用formfield_for_dbfield函数过滤下拉表单实例

    环境:Django 2.0.7 xadmin 2.0.1 需求:下拉表单显示的是模型的其他表项或者外键 方法:在adminx.py文件,在class YourModel Admin重写函数 #...self.request.user.is_superuser: # 对case这个表项的下拉选择进行过滤 if db_field.name == "case":...case_owner=self.request.user).order_by('id') # 对assigned_recipient这个表项的下拉选择进行过滤...这里使用循环,为了下方再次查询时在list中使用in for id in stu_ids: ids.append(id['student_id']) # 根据主键在ids列表查询得到...</select 注意: 注意 <select 中加入了一个name “name” 后台也正是通过这个name来获得数据的 以上这篇xadmin使用formfield_for_dbfield函数过滤下拉表单实例就是小编分享给大家的全部内容了

    93230

    Django之Ajax文件上传

    浏览器的原生 表单,如果不设置 enctype 属性,那么最终就会以 默认格式application/x-www-form-urlencoded 方式提交数据,ajax默认也是这个。...你可以个性化处理句柄来个性化Django处理文件的行为。比如你可以使用个性化的处理句柄来强制用户配额,实时地压缩数据,渲染进度条,甚至在保存在本地的同时向另一个存储地发送数据。...默认的,这个列表包含FILE_UPLOAD_HANDLERS提供的处理句柄,但是你可以像修改其他列表一样修改这个列表。...需要的方法: 自定义的上传处理句柄必须定义一下的方法: FileUploadHandler.receive_data_chunk(self,raw_data,start):文件上传中接收块。...大多数平台,临时文件有一个0600模式,内存保存的文件将使用系统标准umask。 django上传文件详解

    2.2K10

    django 1.8 官方文档翻译: 5-1-1 使用表单

    HTML 表单 在HTML表单是位于... 之间的元素的集合,它们允许访问者输入文本、选择选项、操作对象和控制等等,然后将信息发送回服务器。...其它的表单会复杂些;例如弹出一个日期选择对话框的界面、允许你移动滚动条的界面、使用JavaScript 和CSS 以及HTML 表单 元素来实现操作控制的界面。...实例化、处理和渲染表单Django 渲染一个对象时,我们通常: 在视图中获得它(例如,数据库获取) 将它传递给模板上下文 使用模板变量将它扩展为HTML 标记 在模板渲染表单和渲染其它类型的对象几乎一样...当我们实例化表单时,我们可以选择让它为空还是预先填充它,例如使用: 来自一个保存后的模型实例的数据(例如用于编辑的管理表单) 我们其它地方获得的数据 从前面一个HTML 表单提交过来的数据 最后一种情况最令人关注...这是一个非常简单的表单。实际应用,一个表单可能包含几十上百个字段,其中大部分需要预填充,而且我们预料到用户将来回编辑-提交几次才能完成操作。 我们可能需要在表单提交之前,在浏览器端作一些验证。

    4.2K20

    Django学习笔记 1.7 自定义 admin 站点

    作者: iotisan 前言 这节笔记将更加深入地处理 admin 站点,包括修改表单更加直观呈现模型数据,快速添加关联对象,以及后台涉及的列表展示、过滤器、搜索框等操作。...1 自定义后台表单 polls/admin.py 通过 admin.site.register(Question) 注册 Question 模型,Django 能够构建一个默认的表单用于展示。...通常来说,你期望能自定义表单的外观和工作方式。你可以在注册模型时将这些设置告诉 Django。...3 自定义后台更改列表 3.1 显示列表 默认情况下,Django 显示每个对象的 str() 返回的值。但有时如果我们能够显示单个字段,它会更有帮助。...为此,使用 list_display 后台选项,它是一个包含要显示的字段名的元组,在更改列表以列的形式展示这个对象: class QuestionAdmin(admin.ModelAdmin):

    99120

    Django 3.1 官网学习路线

    在处理请求时,Django urlpatterns 的第一个模式开始,沿着列表向下移动,将所请求的 URL 与每个模式进行比较,直到找到一个匹配的。...现在您在“更改列表”页面查看问题。此页面显示数据库的所有问题,并允许您选择一个进行更改。有“What's up?”“我们之前提出的问题是: 这里需要注意的是: 表单是根据问题模型自动生成的。... 第五部分:自定义管理表单 通过将问题模型注册为 admin.site.register(Question),Django 能够构造一个默认的表单表示。...“添加选择表单如下所示: 在该表单,“Question”字段是一个选择框,包含数据库的每个问题。Django 知道一个外键应该在管理中表示为一个框。在我们的例子,目前只存在一个问题。...使用表格内联(而不是 StackedInline),相关对象将以更紧凑的、基于表格的格式显示: 自定义管理员更改列表 现在问题管理页面看起来不错了,让我们对“更改列表”页面做一些调整——这个页面显示系统的所有问题

    8.2K10
    领券