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

如何在Django中添加显示下拉字段

在Django中添加显示下拉字段的方法如下:

  1. 首先,在你的Django项目中的相应应用的models.py文件中定义一个模型类,该模型类将包含你想要显示下拉字段的属性。例如,我们创建一个名为"Book"的模型类,其中包含一个名为"genre"的属性,用于表示书籍的类型。
代码语言:txt
复制
from django.db import models

class Book(models.Model):
    GENRE_CHOICES = (
        ('F', 'Fiction'),
        ('N', 'Non-fiction'),
        ('M', 'Mystery'),
        ('R', 'Romance'),
    )
    genre = models.CharField(max_length=1, choices=GENRE_CHOICES)
    # 其他属性...

在上述代码中,我们使用了CharField字段来表示"genre"属性,并通过choices参数指定了下拉选项的值和显示文本。

  1. 接下来,在你的Django项目中的相应应用的forms.py文件中创建一个表单类,该表单类将使用上述模型类中的属性来生成下拉字段。例如,我们创建一个名为"BookForm"的表单类。
代码语言:txt
复制
from django import forms
from .models import Book

class BookForm(forms.ModelForm):
    class Meta:
        model = Book
        fields = ['genre']

在上述代码中,我们使用ModelForm类来创建一个表单类,并通过Meta类指定了使用的模型类和要显示的字段。

  1. 然后,在你的Django项目中的相应应用的views.py文件中创建一个视图函数,该视图函数将处理表单的展示和提交。例如,我们创建一个名为"add_book"的视图函数。
代码语言:txt
复制
from django.shortcuts import render
from .forms import BookForm

def add_book(request):
    if request.method == 'POST':
        form = BookForm(request.POST)
        if form.is_valid():
            form.save()
            # 处理表单提交成功后的逻辑
    else:
        form = BookForm()
    return render(request, 'add_book.html', {'form': form})

在上述代码中,我们首先判断请求的方法是否为POST,如果是,则创建一个BookForm实例,并通过is_valid()方法验证表单数据的有效性。如果表单数据有效,则保存表单数据。如果请求的方法不是POST,则创建一个空的BookForm实例。最后,将表单实例传递给模板进行渲染。

  1. 最后,在你的Django项目中的相应应用的templates目录下创建一个名为"add_book.html"的模板文件,用于展示表单。例如,我们在模板文件中使用Django模板语言来渲染表单。
代码语言:txt
复制
<form method="post">
  {% csrf_token %}
  {{ form.as_p }}
  <button type="submit">提交</button>
</form>

在上述代码中,我们使用form.as_p将表单渲染为一个包含段落标签的HTML表单。

通过以上步骤,你就可以在Django中添加显示下拉字段了。当用户访问add_book视图时,将展示一个包含下拉字段的表单,用户可以选择相应的选项并提交表单。提交后,你可以根据需要处理表单数据。

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

相关·内容

Django Sqlite 数据库,在已有表中添加新字段

一、model文件添加字段 可根据字段要求设置属性,如字段类型、是否为null,默认值等 from django.db import models # Create your models here....05-20 13:43:38') # 运行时间点 def __str__(self): return str(self.id) 二、迁移数据 1、项目文件下执行命令: #添加迁移事务...manage.py migrate Operations to perform: Apply all migrations: App, admin, auth, authtoken, contenttypes, django_cas_ng...OK 2、迁移完成后,将生成迁移文件 3、迁移完成后,新字段添加成功 三、撤销迁移 1、撤销上一次迁移数据 可以通过 migrate 传递上一次迁移的编号来撤销迁移。...1511,进入迁移文件,找到dependencies中信息 dependencies = [ ('App', '0019_auto_20220520_1510'), ] 命令行中执行撤销

4K10
  • 35.Django2.0文档

    该层处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。   V:代表视图(View),即业务逻辑层。 该层包含存取模型及调取恰当模板的相关逻辑。 你可以把它看作模型与模板之间的桥梁。  ...其它的django.contrib应用程序,如django.contrib.redirects,其它从网上下在的第三方Django应用程序一样,都会自行添加到管理工具。  ...(1)自定义列表  默认情况下,Author下面只显示每个作者的姓名 ? 我们可以在这基础上改进,添加其它字段,从而改变列表的显示。...例如,我们的book数据库膨胀到拥有数千条publishers的记录,以致于book的添加页面装载时间较久,因为它必须把每一个publisher都装载并显示在`` 下拉框`` 中。...它是一个包含外键字段名称的元组,它包含的字段将被展现成`` 文本框`` ,而不再是`` 下拉框`` 。

    11.3K100

    Python:Django框架

    如SEX_CHOICES=((‘F’,’Female’),(‘M’,’Male’),) db_column string 值,指定当前列在数据库中的名字,不设置,将自动采用model字段名 db_index...primary_key 设置当前字段为主键,如果没有设置主键django创建表时会自动id主键 radio_admin 用于 admin 模式下将 select 转换为 radio 显示。...widget : 字段控件 label : 字段在html中显示的标签 initial : 初始在字段中显示的值 help_text: 在字段后面显示定义的帮助文档 error_messages :...中添加 from django import forms class SexChoiceForms(forms.Form): choices_item=[(1,'男'),(2,'女'),(3,'...SIMPLEUI_LOGO = 'logo链接' 详细请看:SimpleUi快速上手 Django Admin后台显示 多对多字段 models代码背景【 tag是多对多字段:一个tag可以对应多个文章

    4.4K40

    Django进阶知识

    数据库中字段【年】部分是否可以建立唯一索引 verbose_name Admin中显示的字段名称 blank Admin中是否允许用户输入为空...Admin中显示选择框的内容,用不变动的数据放在内存中从而避免跨表操作 如:gf = models.IntegerField(choices=[(0, '...Django Admin中的错误信息会优先根据Admiin内部的ModelForm错误信息提示,如果都成功,才来检查Model的字段并显示指定错误信息 b....多对多:在某表中创建一行数据是,有一个可以多选的下拉框 例如:创建用户信息,需要为用户指定多个爱好 一对一:在某表中创建一行数据时,有一个单选的下拉框(下拉框中的内容被用过一次就消失了 例如:原有含10...在Admin或ModelForm中显示关联数据时,提供的条件: # 如:

    3.6K20

    python-django 模型mode

    Django通过model不可以创建数据库,但可以创建数据库表,一下是创建表的字段以及表字段的参数。...一、字段 1、models.AutoField  自增列 = int(11)   如果没有的话,默认会生成一个名称为 id 的列,如果要显示的自定义一个自增列,必须将给列设置为主键 primary_key...1、null=True   数据库中字段是否可以为空 2、blank=True   django的 Admin 中添加数据时是否可允许空值 3、primary_key = False   主键,对AutoField...models.CharField(max_length=2,choices = GENDER_CHOICE) 6、max_length 7、default  默认值 8、verbose_name  Admin中字段的显示名称...,有一个单选的下拉框(下拉框中的内容被用过一次就消失了)。

    68730

    零基础使用Django2.0.1打造在线教育网站(九):初识后台管理

    然后点击下拉的 Run manage.py Task按钮,在命令行中输入:runserver再回车: 在浏览器地址栏中输入http://127.0.0.1:8000/admin出现: 恭喜你...接下来就是把我们前面定义的数据库字段都显示出来,首先把我们的UserProfile注册进来。...: Meta信息就是用于后台显示的,其中verbose_name定义的是后台主页面显示字段,verbose_name_plural是verbose_name的复数形式,如果这两者不相等,那么verbose_name_plural...我们现在尝试添加一个邮箱验证码,点击右侧的增加邮箱验证码按钮,输入相关信息,可以看到添加成功了: 接下来,我们看一下右侧的显示列,点击一下: 里面可以选择显示的内容,我们现在想在刚才的页面同时显示这些全部信息..., 'send\_type', 'send\_time' # 一次显示你想出现的多行数据, # 这里面的字段都是你在前面数据库中定义的,请保持数据的一致 然后还可以配置过滤器,搜索框等,这里就不一一说明

    1.2K30

    零基础使用Django2.0.1打造在线教育网站(八):数据库字段的定义(下)

    所以通过分析,我们需要新建4个表,用于信息的存取: [987f98epil.png] c、开始数据库字段的定义 打开我们的courses/models.py文件,添加并修改如下代码: from django.db...;verbose_name就是你定义字段的别称(后台管理中显示) 我们继续接着刚才的代码,我们在下面添加如下内容: # 视频信息 class Video(models.Model): # 前面知道一个章节对应多个视频...c、开始数据库字段的定义 打开我们的organization/models.py文件,添加并修改如下代码: from django.db import models from datetime import...如下图所示:[xw17jlvbg8.png] c、开始数据库字段的定义 打开我们的operation/models.py文件,添加并修改如下代码: from django.db import models...测试运行一下项目 先点击菜单下的Tools按钮 ,然后点击下拉的 Run manage.py Task按钮,在命令行中输入:runserver再回车:[9z2v38kssx.png] 在浏览器地址栏中输入

    86920

    Django2.0中文(admin)

    createsuperuser 2 urls.py: admin/ include(admin.site.urls) 3 注册管理的models admin.site.register(Object) from django.contrib...verbose_name='' email = models.EmailField(blank=True, verbose_name='e-mail' ) 6 自定义ModelAdmin from django.contrib...///filter_horizontal和filter_vertical选项只能用在多对多字段 上, 而不能用于 ForeignKey字段。 默认地,管理工具使用下拉框 来展现外键 字段。...但是,正如多对多字段 那样,有时候你不想忍受因装载并显示这些选项而产生的大量开销。...例如,我们的book数据库膨胀到拥有数千条publishers的记录,以致于book的添加页面装载时间较久,因为它必须把每一个publishe都装载并显示在下拉框 中 9 ForeignKey:用raw_id_fields

    44120

    关于“Python”的核心知识点整理大全56

    在3处,我们显示表单,从中可知Django使得完 成显示表单等任务有多简单:我们只需包含模板变量{{ form.as_p }},就可让Django自动创建显 示表单所需的全部字段。...图19-1显示了生成的表单。请使用这个表单来添加几 个新主题。 19.1.2 添加新条目 现在用户可以添加新主题了,但他们还想添加新条目。...新类EntryForm继承了forms.ModelForm,它包含的Meta类指出了表单基于的模型以及要在表单中包含哪些字段。这里也 给字段'text'指定了一个空标签(见1)。...小部件(widget)是一个HTML表单元素,如单行文本框、 多行文本区域或下拉列表。通过设置属性widgets,可覆盖Django选择的默认小部件。...通过让 Django使用forms.Textarea,我们定制了字段'text'的输入小部件,将文本区域的宽度设置为80 列,而不是默认的40列。

    14010

    Django-form表单

    我们可能想使用非常复杂的字段,以允许用户做类似从日历中挑选日期这样的事情,等等。 这个时候,让Django 来为我们完成大部分工作是很容易的。...在Django 中构建一个表单 Form 类 我们已经计划好了我们的 HTML 表单应该呈现的样子。在Django 中,我们的起始点是这里: ?...如果直接设置此字段,更新操作后,下拉框并不会更新,需要重启django程序,因为直接在类中定义的静态字段,只会执行一次,即查询显示操作,在编译时就已经执行完毕, 为了让下拉框的数据实时同步,我们需要重写构造方法...‘只能是数字’ }, validators=[RegexValidator('\d+','只能是数字') ] ) 主动向form中添加错误信息 # form.add_error('password...我们没有必要非要让Django 来分拆表单的字段;如果我们喜欢,我们可以手工来做(例如,这样允许重新对字段排序)。

    3.9K70

    使用 Django 的 admin 定制后台,丰富自己网站的后台管理系统

    exclude 这个属性是用来设置不需要展示的字段的,接受一个元祖或者列表,只要设置了的字段就不会在后台显示,比如这个例子中我不想要后台显示文章的阅读量。...list_display_links 这个属性是给 list_display 中展示的字段添加 标签属性的,也就是说添加了这个属性的字段都可以点击进入模型实例的内容页,如上图中所示,我给 title...list_filter 属性是过滤器,可以用来筛选,设置了这个之后可以在后台的侧边栏看到可以用来筛选的字段的列表,效果如图所示: filter_horizontal 这个属性非常有用,它可以给模型中的多选字段添加左右选框...定义了这个函数之后,可以使用 .short_description 来给这个自定义的字段添加一个字段名称,然后就可以把这个函数当做一个字段添加到 list_display 中展示到后台了,展示的效果如图...return super(ArticleAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs) 上面这个函数重写了多对一模型中下拉框里面的显示项目

    3.2K10

    关于“Python”Django 管理网站的核心知识点整理大全52

    我们需要告诉Django,默认应使用哪个属性来显示有关主题的信息。Django调用方法 __str__()来显示模型的简单表示。...向管理网站注册模型 Django自动在管理网站中添加了一些模型,如User和Group,但对于我们创建的模型,必须 手工进行注册。...这种字段不需要长度限制,因为我们 不想限制条目的长度。属性date_added让我们能够按创建顺序呈现条目,并在每个条目旁边放置 时间戳。 在4处,我们在Entry类中嵌套了Meta类。...我们还 添加了一个省略号,指出显示的并非整个条目。 18.2.5 迁移模型 Entry 由于我们添加了一个新模型,因此需要再次迁移数据库。...你将看到一个下拉列表,让你能够选择要为哪个主题创建条目, 还有一个用于输入条目的文本框。从下拉列表中选择Chess,并添加一个条目。下面是我添加的 第一个条目。

    17010

    Django教程(二)- Django视图与网址进阶1. HTML表单2.CSRF3.代码操作

    表单元素是允许用户在表单中输入内容,比如:文本域(textarea)、下拉列表、单选框(radio-buttons)、复选框(checkboxes)等等。...> 注意:密码字段字符不会明文显示,而是以星号或圆点替代。...在返回的 HTTP 响应的 cookie 里,django 会为你添加一个 csrftoken 字段,其值为一个自动生成的 token 在所有的 POST 表单时,必须包含一个 csrfmiddlewaretoken...字段 (只需要在模板里加一个 tag, django 就会自动帮你生成,见下面) 在处理 POST 请求之前,django 会验证这个请求的 cookie 里的 csrftoken 字段的值和提交的表单里的...创建urls.py 在项目的urls.py中,导入django.conf.urls.include模块,并且添加到urlpatterns列表 ?

    4.3K40

    Django 外键引用另一个表中的多个字段

    在 Django 中,外键(ForeignKey)通常只引用另一张表的一个字段,比如一个主键或一个唯一标识字段。然而,如果我们需要让一个外键引用另一张表中的多个字段,通常有以下几种方法来实现这种关系。...1、问题背景在 Django 中,模型之间的关系通常使用外键(ForeignKey)来建立。外键允许一个模型中的字段引用另一个模型中的主键。然而,有时我们需要在一个模型中引用另一个模型中的多个字段。...以下是如何在 Django 中使用复合主键来实现外键引用另一个表中的多个字段:在 product_models 模型中,添加一个 id 字段作为主键:class product_models(models.Model...在 sales_process 模型中,添加一个 price 字段和一个 commission 字段,并使用 ForeignKey 选项来引用 product_models 表中的 model_price...划重点Django 不直接支持复合外键,但可以通过添加唯一约束、使用中间表或在查询中使用逻辑约束来实现类似效果。

    10510

    django 的form规则组件的笔记(附代码)

    =None 9.5 obj.as_p 9.6 disabled=False, 9.7 widget=None 10 widget属性可以定义html哪些插件 10.0 choices的选项可以从数据库中获取...10.1 RadioSelect (单选框) 10.2 SelectMultiple(下拉框多选) 10.3 Django内置插件: 10.4 NumberInput 10.5 EmailInput...form文件里面的某一个字段,里面有这个属性,那么将这个对象返回给前端,就可以直接显示,获取的方法是 动态的生成标签 9.2 label_suffix=None label_suffix=..., 初始值 9.5 obj.as_p form 里面有多个字段,那么只要页面写这个as_p,那么就可以遍历多个字段进行展示了; 9.6 disabled=False, disabled...提供的ModelChoiceField和ModelMultipleChoiceField字段来实现 from django import forms from django.forms import fields

    97610

    Django admin管理工具的使用、定制及源码解析

    Mode中的某个类注册,即可在Admin中实现增删改查的功能,如: admin.site.register(models.UserInfo) 但是,这种方式比较简单,如果想要进行更多的定制操作,需要利用...如:“user__user_name” 3、颜色显示 想对某些字段设置颜色,可用下面的设置: 1 2 3 4 5 6 7 8 9...9.自定义列表字段 在DataPaperStore模型中有 end_date 字段,如果当前时间大于end_date 是我们想显示一个“已过期”,但admin列表显示不能直接用该字段,也显示不出来。...,获取相关数据再列表中显示,效果如下: ?...最终生成的结果就是可以选择所有的省,也可以选择所有的市,这并不合理,正确的应该是在选择某个省的时候在市的下拉列表里只有该省的城市。 而,django原生并不能做到这么智能。

    4.1K40

    零基础使用Django2.0.1打造在线教育网站(十六):列表分页功能

    > 然后去settings.py文件里,注册这个app: 'pure_pagination', 接下来点击github上的项目地址django-pure-pagination,然后下拉至settings...SHOW_FIRST_PAGE_WHEN_INVALID: 表示当输入页数不合法是否要跳到第一页 我们继续下拉,看一下官方给的例子: # views.py from django.shortcuts...,每页显示6个,这个字段必填 p = Paginator(all_orgs, 6, request=request) orgs = p.page(page)...我们在前端页面配置如下: {% for course_org in all_orgs.object_list %} 也就是这个地方:[439st1dkwl.png] 现在考虑如何在前端页面显示分页: 如果使用默认的...('ct', '') # 选中了类别之后,根据category与数据库中的category进行判断,从而显示授课机构 if category: all_orgs = all_orgs.filter

    69810
    领券