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

Django:在组合框中显示外键模型的值并选择它

Django是一个开源的Python Web框架,用于快速开发高质量的Web应用程序。它采用了MTV(Model-Template-View)的设计模式,提供了强大的数据库访问抽象层和灵活的URL路由配置,使开发人员能够轻松构建功能丰富的Web应用。

在Django中,外键(ForeignKey)是一种关系字段,用于建立模型之间的关联关系。当一个模型与另一个模型存在外键关系时,可以通过组合框(下拉列表)来显示外键模型的值并选择它。

以下是在Django中显示外键模型值并选择的步骤:

  1. 定义模型:首先,在Django的模型文件中定义包含外键字段的模型。例如,我们有一个模型叫做Book,其中包含一个外键字段author,关联到Author模型。
代码语言:txt
复制
from django.db import models

class Author(models.Model):
    name = models.CharField(max_length=100)

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.ForeignKey(Author, on_delete=models.CASCADE)
  1. 创建表格:运行Django的数据库迁移命令,创建数据库表格。
代码语言:txt
复制
python manage.py makemigrations
python manage.py migrate
  1. 创建表单:在Django的表单文件中创建一个表单类,用于在前端显示和处理数据。
代码语言:txt
复制
from django import forms
from .models import Book

class BookForm(forms.ModelForm):
    class Meta:
        model = Book
        fields = ['title', 'author']
  1. 创建视图:在Django的视图文件中创建一个视图函数,用于处理表单的展示和提交。
代码语言:txt
复制
from django.shortcuts import render
from .forms import BookForm

def book_create(request):
    if request.method == 'POST':
        form = BookForm(request.POST)
        if form.is_valid():
            form.save()
            # 处理表单提交成功后的逻辑
    else:
        form = BookForm()
    return render(request, 'book_create.html', {'form': form})
  1. 创建模板:在Django的模板文件中创建一个HTML模板,用于渲染表单和显示外键模型的值。
代码语言:txt
复制
<!-- book_create.html -->
<form method="post">
  {% csrf_token %}
  {{ form.as_p }}
  <button type="submit">保存</button>
</form>

在上述步骤中,我们定义了一个BookForm表单类,其中的author字段是一个外键字段,它会自动以组合框的形式显示Author模型的值。在视图函数book_create中,我们将表单传递给模板进行渲染,并在模板中使用{{ form.as_p }}来显示表单的字段。

对于Django的外键模型的值显示和选择,腾讯云提供了云服务器(CVM)和云数据库MySQL等产品,可以用于搭建Django应用的服务器和数据库环境。您可以通过以下链接了解更多关于腾讯云的相关产品和服务:

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

相关·内容

Django项目知识点(三)

本文一篇完全介绍django最重要model 6.django model 模型是数据唯一而且准确信息来源。包含正在储存数据重要字段和行为。一般来说,每一个模型都映射一个数据库表。...注意:Django一个模型只允许有一个自增字段,并且该字段必须为主键!...,也可另立主键并将“一”和“多”两表主键作为关联表; 多对多表,则必须设中间关联表,关联表设独立主键,引入两个“多”头主键作为关联表。...PROTECT:此设置,是会报完整性错误。 SET_NULL:此设置,会把设置为null,前提是允许为null。 SET_DEFAULT:此设置,会把设置为默认。...一般使用CASCADE 表示级联删除 也就是有一个数据其中一个表删了,管聊表就会删除,想下如果有个学生不读了,删掉了所有学生报名表数据,学生,课程,是不是先把删了,这就是级联删除,如果设置了

1.9K30

Django 3.1 官网学习路线

字段还可以有各种可选参数;本例,我们将投票默认设置为 0。 最后,请注意使用定义了关系。这告诉 Django 每个选择都与一个问题相关。...按照惯例,Django 会将"_id"附加到外字段名。(是的,你也可以重写这个。) 关系是通过约束来显式。...不要担心可延期部分;告诉 PostgreSQL 事务结束之前不要强制执行。...更改,重新加载页面检查正确出现。 通过点击“今天”和“现在”快捷更改“发布日期”。然后点击“保存继续编辑”。然后点击右上角“历史”。...“添加选择”表单如下所示: 该表单,“Question”字段是一个选择,包含数据库每个问题。Django 知道一个应该在管理中表示为一个我们例子,目前只存在一个问题。

8.2K10
  • Django3.2边学边记—Adimn站点管理

    创建模型管理类来管理某个模型在后台显示页面形式 ModelAdmin类可以控制不同模型Admin界面展示方式,主要包括列表页展示方式、添加修改页展示方式 上文中展示了TestAdmin类一种注册方法...atitle.short_description='标题'   如果是更改模型字段显示列标题,可以定义模型字段时,设置verbose_name ,或者封装成方法,再对方法使用上面那个属性,模型字段不能直接使用那个属性... = 'unknown' 以上通过指定方法属性来控制显示是新老版本通用Django3.2可以通过给装饰器传参来解决:   model.py: 1234567891011121314151617...,如下截图所示: list_filter 应是一个列表或元组,参数字段可以是模型字段,包括字段(注意list_display是不能直接接收字段),会将对应字段列出来,一般用于快速过滤有重复字段...,返回所有包含这些词对象,不区分大小写(即 icontains 查找:不区分大小写包含匹配),其中每个词必须在 search_fields 至少有一个。

    1.3K30

    【云+社区年度正文】Django从入门到精通No.2----模型

    二、模型定义 模型可以定义储存数据字段和,比如我们进行表单提交时候,一些注册信息就可以利用模型来进行管理,然后统一提交到数据库。简单来说,模型是与数据库有关操作集合。...help_text: 字段提示信息 choices:显示选择内容,用不变动数据放在内存以避免跨表操作 verbose_name: 显示字段名称 error_messages:自定义错误信息...1.多对一 因为是关联关系,所以我们必须指定两个类来进行相互操作,这里涉及到一个操作,即ForeignKey字段,而且要定义一方。...db_constraint=True # 是否在数据库创建约束 parent_link=False # Admin是否显示关联数据 2.多对多 多对多表...,必须设中间关联表,关联表设独立主键,引入两个“多”头主键作为关联表

    2.1K00

    Django——model基础

    myapp_modelName,是根据 模型元数据自动生成,也可以覆写为别的名称   2、id 字段是自动添加 3、对于字段,Django 会在字段名上添加"_id" 来创建数据库列名...6、字段 ForeignKey 有一个 null=True 设置(允许接受空 NULL),你可以赋给它空 None 。...(4)unique 如果该设置为 True, 这个数据字段整张表必须是唯一 (5)choices 由二元组组成一个可迭代对象(例如,列表或元组),用来给字段提供选择项。...如果设置了choices ,默认表单将是一个选择而不是标准文本,而且这个选择选项就是choices 选项。... Django 删除对象时,会模仿 SQL 约束 ON DELETE CASCADE 行为,换句话说,删除一个对象时也会删除与它相关联对象。例如: ?

    1.1K100

    Django模型

    Django模型 Django模型定义models.py文件模型是MVTM,也相当于MVCM。 Django模型必须继承自Model类。... 这个东西,通常都是在业务逻辑层面来实现,而不是在数据库实现。但是通常大家学习数据库课程,都会有数据库设计范式,其中有个第三范式就是专指约束。在这里只是简单介绍一下。...choices参数就是从我们定义二元组(GENDER_CHOICES)获取值。二元组第一个会储存在数据库,而第二个将只会用于表单显示。...常用可以如下: CASCADE级联,删除主表数据时连通一起删除外数据 PROTECT保护,通过抛出ProtectedError异常,来阻止删除主表中被应用数据 SET_NULL设置为NULL...,此选项会抛出IntegrityError异常 注意:我们在数据库,设置时候需要制定另一张表关联字段,但是Django里并没有指定。

    1.9K20

    35.Django2.0文档

    在这个模式, Model 代表数据存取层,View 代表是系统中选择显示什么和怎么显示部分,Controller 指的是系统根据用户输入视需要访问模型,以决定使用哪个视图那部分。      ...M:数据存取部分,由django数据库层处理,本章要讲述内容。   V:选择显示哪些数据要显示以及怎样显示部分,由视图和模板处理。   ...默认地,管理工具使用`` 下拉`` 来展现`` `` 字段。但是,正如`` 多对多字段`` 那样,有时候你不想忍受因装载显示这些选项而产生大量开销。...例如,我们book数据库膨胀到拥有数千条publishers记录,以致于book添加页面装载时间较久,因为必须把每一个publisher都装载显示`` 下拉`` 。...解决这个问题办法是使用`` raw_id_fields`` 选项。它是一个包含字段名称元组,包含字段将被展现成`` 文本`` ,而不再是`` 下拉`` 。

    11.3K100

    【愚公系列】2022年01月 Python教学课程 40-Django框架之模型属性详解

    文章目录 一、模型类定义 二、模型类迁移 总结 ---- 一、模型类定义 models.py 文件定义模型类,示例如下: from django.db import models # Create...站点中显示名称 def __str__(self): """定义每个数据对象显示信息""" return self.name # 准备人物列表信息模型类...若为True,则该字段会成为模型主键字段,默认是False,一般作为AutoField选项使用 unique 如果为True, 这个字段必须有唯一,默认是False null是数据库范畴概念...,blank是表单验证范畴 6) 设置时,需要通过on_delete选项指明主表删除数据时,对于引用表数据如何处理,django.db.models包含了可选常量: CASCADE...级联,删除主表数据时连通一起删除外数据 PROTECT保护,通过抛出ProtectedError异常,来阻止删除主表中被应用数据 SET_NULL设置为NULL,仅在该字段null=True

    1.4K20

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

    在这个表单,Question字段是一个select选择,包含了当前数据库中所有的Question实例。Djangoadmin站点中,自动地将所有的关系展示为一个select。...我们例子,目前只有一个question对象存在。 请注意图中绿色加号,连接到Question模型。每一个包含关系对象都会有这个绿色加号。...点击,会弹出一个新增Question表单,类似Question自己添加表单。填入相关信息点击保存后,Django自动将该Question保存在数据库,并作为当前Choice关联对象。...通俗讲就是,新建一个Question并作为当前Choice。 但是,实话说,这种创建方式效率不怎么样。...自定义管理站点外观 很明显,每一个admin页面坐上顶端都显示Django 管理”是感觉很荒诞,仅仅是个占位文本。利用Django模板系统,可以易修改

    3.6K60

    06.Django基础五之django模型层(二)多表操作

    一 创建模型 表和表之间关系     一对一、多对一、多对多 ,用book表和publish表自己来想想关系,想想里面的操作,加约束和不加约束区别,一对一约束是一对多约束上加上唯一约束...,字段建立一方,字段publish如果是字段,那么自动是int类型 publish=models.ForeignKey(to="Publish",to_field="nid",on_delete...注意事项: 表名称myapp_modelName,是根据 模型元数据自动生成,也可以覆写为别的名称   id 字段是自动添加 对于字段,Django 会在字段名上添加"_id" 来创建数据库列名...字段 ForeignKey 有一个 null=True 设置(允许接受空 NULL),你可以赋给它空 None 。   ...名称是聚合标识符,是计算出来聚合名称是按照字段和聚合函数名称自动生成出来。如果你想要为聚合指定一个名称,可以向聚合子句提供

    2.7K20

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

    在这里,我们编写了方法__str__(),返回存储属性text 字符串(见3)。...本节,我们将建立管理网站,通过 使用模型Topic来添加一些主题。 1. 创建超级用户 Django允许你创建具备所有权限用户——超级用户。权限决定了用户可执行操作。...是一个数据库术语,引用了数据库另一条记录;这些代码将每个条目关联 到特定主题。每个主题创建时,都给它分配了一个(或ID)。...4处,我们Entry类嵌套了Meta类。Meta存储用于管理模型额外信息,在这里,让 我们能够设置一个特殊属性,让Django需要时使用Entries来表示多个条目。...单击EntriesAdd链接, 或者单击Entries再选择Add entry。你将看到一个下拉列表,让你能够选择要为哪个主题创建条目, 还有一个用于输入条目的文本

    16510

    django后台管理-admin

    0922自我总结 django后台管理-admin 一.模型注册 admin.py 注册方式一: #在对于注册appadmin文件中导入模型然后注册模型 admin.site.register(导入模型类...可以settings.py设置: LANGUAGE_CODE = 'zh-CN' TIME_ZONE = 'Asia/Shanghai' 1.8版本之后language code设置不同: LANGUAGE_CODE...#listdisplay设置要显示列表字段(id字段是Django模型默认主键) list_display = ('id', 'caption', 'author', 'publish_time...#list_editable 设置默认可编辑字段 list_editable = ['machine_room_id', 'temperature'] #fk_fields 设置显示字段...一般ManyToManyField多对多字段用过滤器;标题等文本字段用搜索;日期时间用分层筛选。 过滤器如果是需要遵循这样语法:本表字段__表要显示字段。

    88110

    Django自关联实现多级联动查询实例

    1 问题引出 我们开发网站时候可能会遇到这种情况,多个字段之间有一定关联性,比如省市县,选择省,之后下一个选择则为该省市集合,选择市之后下一个选择为该市县集合。...一种实现方式是,建立三个模型表,用一对多方式,显然这样是不太合理Django提供了自关联实现,模型自身关联,即一条数据关联另一条数据。 本文以省市县为案例介绍其具体实现方法。...2 具体实现 2.1 建立数据表Model model.py建立数据表 class AdressInfo(models.Model): address = models.CharField(max_length...pid:,self自关联,这里也可以使用 AdressInfo null:为True表示可以为空,因为省级行政单位没有父级 blank:为True表示admin后台数据写入时候可以允许为空...,具体实现是通过下拉改变触动相应函数。

    2.4K10

    django orm 重点大全

    1.最简单跨表,查询符合主表条件记录列表 #用户类型表 class User_typ(models.Model): name=models.CharField(max_length=...如果可调用 ,每有新对象被创建都会被调用。 (3)primary_key 如果为True,那么这个字段就是模型主键。...(4)unique 如果该设置为 True, 这个数据字段整张表必须是唯一 (5)choices 由二元组组成一个可迭代对象(例如,列表或元组),用来给字段提供选择项。...如果设置了choices , 默认表单将是一个选择而不是标准文本,而且这个选择选项就是choices 选项。...一个给定 model 类实例,想得到某个 choices 字段显示,就调用 get_FOO_display 方法(这里 FOO 就是 choices 字段名称 )。

    79240

    Python:Django框架

    settings.py :该 Django 项目的设置或配置。 查看理解这个文件可用设置类型及其默认。 urls.py:Django项目的URL设置。 可视其为你django网站目录。...特别说明:django2.1之前使用是url(),使用是正则,如果你仍然想使用正则表达式在你route,你可以使用re_path(),用法也path基本完全相同,只是 配置route时,...choices 元组,一个用来选择2维元组。第一个是实际存储,第二个用来方便进行选择。...显示标签 initial : 初始字段显示 help_text: 字段后面显示定义帮助文档 error_messages : 是一个字典,错误提示信息 show_hidden_initial...unique 是否为唯一 Not null 不能为空 foreign key 指定关键表 mysql> use my_db #使用my_db数据库 Database changed mysql

    4.4K40

    Python Django框架笔记(五):模型

    在这个模式, Model 代表数据存取层,View 代表是系统中选择显示什么和怎么显示部分,Controller 指的是系统根据用户输入视需要访问模型,以决定使用哪个视图那部分。...对于Django,可以理解为遵循MVC模式: M,数据存取部分,由django数据库层处理,即模型。 V,选择显示哪些数据要显示以及怎样显示部分,由视图和模板处理。... MTV开发模式: M代表模型(Model),即数据存取层。 该层处理与数据相关所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间关系等。...该层处理与表现相关决定: 如何在页面或其他类型文档中进行显示。 V代表视图(View),即业务逻辑层。 该层包含存取模型及调取恰当模板相关逻辑。 你可以把看作模型与模板之间桥梁。...很不幸,这是对 MVC 不同诠释所引起错误认识。 Django 对 MVC 诠释,视图用来描述要展现给用户数据;不是数据 如何展现 ,而且展现 哪些 数据。

    2K60

    用python搭建一个校园维基网站(二)—— 可编辑内容首页创建

    我们WikiHome页面模型需要图中红色高亮一系列字段,其中title字段继承自Page类,不用额外添加,image字段为连接到wagtailimages.Image模型。...WikiHomeTopLink类似,为了层次上更清晰,采用了多重继承,models.py只定义ParentalKey,而在另一个文件定义了RelatedLink模型,包含字段有链接文本和具体链接...,只是具体链接可能为链、某个页面或某个文档,占用了三个字段,此外还利用@property装饰器为该模型添加了link属性,来返回具体链接,这样模板中就可以使用.link调用。...对于模板来说,它对应页面模型处于上下文环境,模板可以调用到该页面模型所有元素(使用Django模板语言)。我们要按照页面排版将元素填充进去。...如下图创建保存,Root Page选择新创建页面。 ? 最终,访问http://127.0.0.1:8000/ 便可以看到页面效果。 ?

    3.6K80

    django自定义非主键自增字段类型详解(auto increment field)

    key)” # (primary key)也是(key)一种,key还包括(foreign key)、唯一(unique key) errors.extend(self....) 应用场景: 一对多:当一张表创建一行数据时,有一个单选下拉(可以被重复选择) 例如:创建用户信息时候,需要选择一个用户类型【普通用户】【金牌用户】【铂金用户】等。...多对多:某表创建一行数据是,有一个可以多选下拉 例如:创建用户信息,需要为用户指定多个爱好 一对一:某表创建一行数据时,有一个单选下拉(下拉内容被用过一次就消失了 例如:原有含10...parent_link=False # Admin是否显示关联数据 OneToOneField(ForeignKey) to, # 要进行关联表名 to_field=None # 要关联字段名称..., # Admin或ModelForm显示关联数据时,提供条件: # 如: - limit_choices_to={'nid__gt': 5} - limit_choices_to=lambda

    2.3K10
    领券