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

Django在创建或更新模型时显示不同的形式

Django是一个使用Python语言编写的开源Web应用框架,它采用了MTV(模型-模板-视图)的架构模式,旨在简化和加速Web应用程序的开发过程。

当我们需要在Django中创建或更新模型时,可以通过使用表单(Form)来实现不同的展示形式。Django的表单类(Form class)提供了丰富的字段类型和验证功能,可以方便地处理用户输入数据。

下面是一个示例,展示如何在Django中根据创建或更新操作显示不同的表单形式:

  1. 首先,我们需要定义一个模型(Model),它将对应数据库中的表格。假设我们有一个名为"Article"的模型,它有标题(title)和内容(content)两个字段。
代码语言:txt
复制
from django.db import models

class Article(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()
  1. 接下来,我们需要为这个模型创建一个表单类。我们可以使用Django的ModelForm类来自动生成表单字段,并自动处理与模型的关联。
代码语言:txt
复制
from django import forms
from .models import Article

class ArticleForm(forms.ModelForm):
    class Meta:
        model = Article
        fields = ['title', 'content']
  1. 现在我们可以在视图函数(View function)中使用这个表单类来处理创建和更新操作。我们可以通过判断请求方法来决定显示不同的表单形式。
代码语言:txt
复制
from django.shortcuts import render, get_object_or_404, redirect
from .forms import ArticleForm
from .models import Article

def create_article(request):
    if request.method == 'POST':
        form = ArticleForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect('article_list')
    else:
        form = ArticleForm()
    return render(request, 'create_article.html', {'form': form})

def update_article(request, article_id):
    article = get_object_or_404(Article, id=article_id)
    if request.method == 'POST':
        form = ArticleForm(request.POST, instance=article)
        if form.is_valid():
            form.save()
            return redirect('article_list')
    else:
        form = ArticleForm(instance=article)
    return render(request, 'update_article.html', {'form': form, 'article': article})

在上述代码中,当请求方法为GET时,即渲染表单页面时,我们使用空的表单实例(instance)来创建表单对象。当请求方法为POST时,即提交表单时,我们使用从请求中获取的数据和要更新的模型实例(instance)来创建表单对象。

通过上述的代码,我们实现了在Django中根据创建或更新模型时显示不同的形式。这样,我们可以根据需要灵活地展示不同的表单内容,使用户能够方便地进行创建和更新操作。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 云服务器(Elastic Cloud Server,ECS):提供可扩展的计算能力,支持多种操作系统和应用场景。详情请参考腾讯云云服务器
  • 云数据库MySQL版(TencentDB for MySQL):高性能可扩展的云数据库服务,适用于各种规模的业务需求。详情请参考腾讯云云数据库MySQL版
  • 云存储(对象存储,COS):安全可靠的云存储服务,提供数据存储和访问能力。详情请参考腾讯云云存储
  • 人工智能机器学习平台(AI Lab):为开发者提供丰富的人工智能算法和开发工具,支持构建智能应用。详情请参考腾讯云AI Lab

以上是关于Django在创建或更新模型时显示不同形式的解答,希望能对您有所帮助。如果有其他问题,请随时提问。

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

相关·内容

如何解决DLL入口函数中创建结束线程卡死

先看一下使用Delphi开发DLL如何使用MAIN函数, 通常情况下并不会使用到DLLMAIN函数,因为delphi框架已经把Main函数隐藏起来 而工程函数 begin end 默认就是MAIN...以上都是题外话,本文主要说明DLL入口函数里面创建和退出线程为什么卡死和如何解决问题。...1) DLL_PROCESS_ATTACH 事件中 创建线程 出现卡死问题 通常情况下在这事件中仅仅是创建并唤醒线程,是不会卡死,但如果同时有等待线程正式执行代码,则会卡死,因为该事件中...实际上如果是通过LoadLibrary加载DLL,则会在LoadLibrary结束前后某一刻正式执行)。...解决办法同样是避免 DLL_PROCESS_DETACH事件中结束线程,那么我们可以该事件中,创建并唤醒另外一个线程,该新线程里,结束需要结束线程,并在完成后结束自身即可。

3.8K10

Django ORM 知识概要

只有当字段设置了default参数才能使用 SQL等价物:SET DEFAULT。 SET(value 或者 函数返回值):设置给定值。这个不是SQL标准一部分,完全由Django处理。...,Meta类字段如下: db_table ordering 列表或者元组形式 verbose_name 别名 verbose_name_plural 别名复数 abstract 不同步到数据库,只是用于被别的类继承...指定模型属于哪个应用(如果在settings里面已经注册过应用的话,就不用写这个字段了) db_tablespace 定义数据库表空间名字 Django 数据表操作 更改数据表 删除数据库表步骤...删除对应模型类代码 删除migrationd文件夹下面的模型类 删除Djangomigrations表中对应记录 删除数据库表 导入数据 Django shell 导入数据 引入模型 调用模型对象...(),bulk_create(),create_or_update() 创建,批量创建创建更新 更新对象 update(),update_or_create() 更新更新创建 删除对象 delete

1.8K20
  • TO-do api

    如果我们两个不同应用程序中更新模型,然后运行python manage.py makemigrations,则生成单个迁移文件将包含两个应用程序中数据。 这只会增加调试难度。...接下来,我们创建一个类TodoSerializer。 这里格式与我们Django本身中创建模型表单方式非常相似。 我们正在指定要使用模型以及我们要公开特定字段。...从我们todos / urls.py文件中调用,我们有两条路线,因此有两个不同视图。 我们将使用ListAPIView显示所有待办事项,并使用RetrieveAPIView显示单个模型实例。...回想一下,HTTP动词GET用于读取数据,而POST用于更新创建数据。 “列表待办事项”下显示GET / api /,它告诉我们我们在此端点上执行了GET。...每当客户端与不同域(mysite.com与yoursite.com)端口(localhost:3000与localhost:8000)上托管API进行交互,都会存在潜在安全问题。

    3.6K31

    django 1.8 官方文档翻译: 2-3-1 模型实例参考

    关于这个细微差别的更多信息,参见上文显示指定主键值 和下文强制使用INSERT UPDATE。 Django 1.5 和更早版本中,设置主键Django 会作一个 SELECT。...当保存通过延迟模型加载(only() defer())进行访问模型,只有从数据库中加载字段才会得到更新。这种情况下,有个自动update_fields。...当你unpickle 它,它将包含pickle 模型实例,而不是数据库中的当前数据。 你不可以不同版本之间共享pickles 模型Pickles 只对于产生它们Django 版本有效。...Django 许多地方都使用unicode(obj)(或者相关函数 str(obj))。最明显Django Admin 站点显示一个对象和在模板中插入对象时候。...最明显Django Admin 站点显示一个对象和在模板中插入对象时候。 所以,你应该始终让__str__() 方法返回模型一个友好、人类可读形式

    1.9K10

    Django 教程 --- Django CRUD

    Django基于MVT(模型视图模板)体系结构,并围绕CRUD(创建,检索,更新,删除)操作展开。最好将CRUD解释为构建Django Web应用程序一种方法。...检索 –以列表形式(列表视图)读取,检索,搜索查看现有条目,详细检索特定条目(详细视图) 更新更新编辑数据库表中现有条目 删除 –删除,停用删除数据库表中现有条目 Django CRUD...考虑一个名为项目,其中geeksforgeeks有一个名为应用geeks 拥有一个项目和一个应用程序之后,让我们创建一个模型,我们将通过我们视图创建模型。...列表显示 列表视图是指一种视图(逻辑),用于以特定顺序列出数据库中表所有特定实例。它用于单个页面上显示多种类型数据查看(例如,电子商务页面上产品)。...详细视图 详细信息视图是一种视图(逻辑),用于显示数据库中具有所有必要详细信息特定实例。它用于单个页面视图上显示多种类型数据,例如用户个人资料。

    2K10

    Django 教程 --- Django视图

    Django视图是Django M V T结构重要参与者之一。视图是用户界面,即您呈现网站浏览器中看到内容。它由HTML / CSS / Javascript和Jinja文件表示。...根据Django文档,视图函数是一个Python函数,它接受Web请求并返回Web响应。此响应可以是网页HTML内容,重定向,404错误,XML文档图像(Web浏览器可以显示任何内容) ?...基于功能视图通常分为4种基本策略,即CRUD(创建,检索,更新,删除)。CRUD是用于开发任何框架基础。 基于功能视图示例– 让我们创建一个基于函数视图列表视图以显示模型实例。...Python manage.py makemigrations Python manage.py migrate 现在,让我们使用Shell创建模型一些实例,运行bash形式, Python manage.py...Django CRUD(创建,检索,更新,删除)基于功能视图:- 创建视图–基于函数视图Django 细节视图–基于函数视图Django 更新视图–基于函数视图Django 删除视图–基于函数视图

    3K30

    37.Django1.11.6文档

    如果当前模型表示一个已经存在且是通过其它方法创建者数据表数据库视图,这会相当有用。 这是设置为managed=False唯一不同之处。 模型处理其它任何方面都和平常一样。 ...当你运行manage.py migrate,将创建这些权限;django.contrib.auth添加到INSTALLED_APPS之后,首次运行migrate,将为所有先前安装模型创建默认权限...因此,当创建用户,它们不会自动创建,但可以使用django.db.models.signals.post_save来适当地创建更新相关模型。 使用相关模型会产生其他查询联接来检索相关数据。 ...through属性是对管理多对多关系模型引用。 定义多对多字段,此模型Django自动创建。 其次,GroupAdmin必须手动排除members字段。 ...当设置为TrueDjango 将对每个请求保存会话到数据库中。 注意会话Cookie 只有一个会话被创建修改后才会发送。

    24.3K80

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

    准备工作 创建管理员用户名和密码:  1 python manage.py createsuperuser   根据提示创建用户名 密码 admin.py中注册模型类 1234567 from django.contrib...创建模型管理类来管理某个模型在后台显示页面形式 ModelAdmin类可以控制不同模型Admin界面中展示方式,主要包括列表页展示方式、添加修改页展示方式 上文中展示了TestAdmin类一种注册方法...控制显示列,Django 会尝试按照这个顺序解释 list_display 每个元素: 一个模型字段。 一个可调用对象。 一个代表 ModelAdmin 属性字符串。...atitle.short_description='标题'   如果是更改模型字段显示列标题,可以定义模型字段,设置verbose_name值 ,或者封装成方法,再对方法使用上面那个属性,模型字段不能直接使用那个属性...12 class TestAdmin(admin.ModelAdmin):    search_fields = ['id','name'] 搜索框中进行搜索Django 会将搜索查询拆分成多个词

    1.2K00

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

    准备工作 创建管理员用户名和密码:  1 python manage.py createsuperuser   根据提示创建用户名 密码 admin.py中注册模型类 1234567 from django.contrib...创建模型管理类来管理某个模型在后台显示页面形式 ModelAdmin类可以控制不同模型Admin界面中展示方式,主要包括列表页展示方式、添加修改页展示方式 上文中展示了TestAdmin类一种注册方法...控制显示列,Django 会尝试按照这个顺序解释 list_display 每个元素: 一个模型字段。 一个可调用对象。 一个代表 ModelAdmin 属性字符串。...atitle.short_description='标题'   如果是更改模型字段显示列标题,可以定义模型字段,设置verbose_name值 ,或者封装成方法,再对方法使用上面那个属性,模型字段不能直接使用那个属性...我理解就是分组整体匹配(Django3.2新增),例如,如果用户搜索 "john winston"  'john winston',Django 会做相当于这个 SQL  WHERE 子句: 1

    1.3K30

    后端框架学习-Django

    简易图: 用户操作流程图: ---- MTV 模型 Django MTV 模式本质上和 MVC 是一样,也是为了各组件间保持松耦合关系,只是定义上有些许不同Django MTV 分别是指...verbose_name:设置此字段admin界面上显示名称,可以中文化admin界面 好习惯:字段选项【添加更改】均要执行 模型类-Meta内部类 使用Meta类来给**模型(其实就是表属性)...2.完全跨过模型类操作数据库 导入 from django.db import connection 用创建cursor类构造函数创建cursor(游标)对象,为保证在出现异常能够释放cursor,...Cookies 保存在客户端浏览器上存储空间 特点: cookies浏览器是以键值对形式进行存储,键和值都是以ASCII码形式存储 存储数据带有生命周期 cookies数据是按照域隔离...中间件以类形式体现 每个中间件负责一些特定功能 中间件方法 继承django.utils.deprecation.MiddlewareMixin类 中间件类须实现下列五个方法中一个多个: process_request

    9.5K40

    Django开发快速入门

    命令行前括号中(library)表明我们虚拟环境处于活动状态。 传统Django网站由一个项目project和一个(多个)代表不同功能应用apps组成。...模型,我们最上面一行从Django导入模型,然后创建一个扩展它Book类。...我们还包括str方法,以便稍后管理员中显示书名。 请注意,ISBN是分配给每本出版书籍唯一13个字符标识符。 由于我们创建了一个新数据库模型,因此我们需要创建一个迁移文件来进行处理。...Admin 我们可以开始通过内置Django应用将数据输入到我们模型中。 但是我们必须首先做两件事: 创建一个超级用户帐户并更新admin.py,以便显示books应用程序。...请注意,出于安全原因,输入密码屏幕上不会显示文本。 现在更新我们图书应用admin.py文件。

    2.3K41

    Django项目知识点(三)

    这个设置让你在使用modelManager上lastest方法,默认使用指定字段来排序 managed 默认值为True,这意味着Django可以使用syncdb和reset命令来创建移除对应数据库...这个选项是指定,模型复数形式是什么,比如verbose_name_plural = "学校"如果不指定Django会自动模型名称后加一个’s’ 字段类型 models.CharField 字符串类型...DateTimeField.auto_now_add 这个参数默认值也为False,设置为True,会在model对象第一次被创建,将字段值设置为创建时间,以后修改对象,字段值不会再更新...自动创建---无论添加修改,都是当前操作时间 auto_now_add 自动创建---永远是创建时间 choices 一个二维元组被用作choices,如果这样定义,Django会select...文章和作者之间关系就是典型多对一关系。作者和文章关系就是一对多。 多对多:某表中创建一行数据是,有一个可以多选下拉框 不同学生有不同课程表 再比如文章和标签关系。

    1.9K30

    Django 3.1 官网学习路线

    migrate 命令只会在 INSTALLED_APPS 中运行应用程序迁移。 创建模型 我们投票应用程序中,我们将创建两个模型: 问题和选择。问题有问题和发布日期。...迁移功能非常强大,它允许您在开发项目随着时间推移更改模型,而不需要删除数据库表并创建新表——它专门用于实时升级数据库,而不会丢失数据。...__str__()方法非常重要,这不仅是为了方便您在处理交互式提示使用,而且因为 Django 自动生成管理员中都使用了对象表示形式。...不同模型字段类型(DateTimeField、CharField)对应于适当 HTML 输入小部件。每种类型字段都知道如何在 Django 管理中显示自己。...删除-显示删除确认页面。 如果“Date published”值与教程 1 中创建问题时间不匹配,这可能意味着您忘记为 TIME_ZONE 设置正确值。

    8.2K10

    Django 1.10中文文档-第一个应用Part2-模型和管理站点

    如果你有兴趣,可以运行你数据库命令行客户端并输入dt (PostgreSQL), SHOW TABLES; (MySQL).schema (SQLite)来显示Django创建表。...不用担心,Django不要求你每次Django生成迁移文件之后都要阅读这些文件,但是它们被设计成可人为编辑形式,以便你可以手工稍微修改一下Django某些具体行为。...让我们来修复这个问题,让Django在打印对象显示一些我们指定信息。...def __str__(self): return self.choice_text 模型中添加__str __()方法非常重要,不仅仅是为了方便您处理交互式提示,而且Django...Django admin管理站点介绍 为您员工客户生成管理网站用来添加,更改和删除内容是繁琐工作,不需要太多创造力。因此,Django完全自动创建模型管理界面。

    2.3K60

    Django 模型继承 BaseModel

    从抽象基类继承来字段可被其它字段值重写,或用 None 删除。 对很多用户来说,这种继承可能就是你想要。它提供了一种 Python 级抽出公共信息方法,但仍会在子类模型创建数据表。...Meta 继承 当一个抽象基类被建立,Django 将所有你基类中申明 Meta 内部类以属性形式提供。若子类未定义自己 Meta 类,它会继承父类 Meta。...你可以创建,删除和更新代理模型实例,所以数据都会存储像你使用原模型(未代理)一样。不同点是你可以修改代理默认模型排序和默认管理器,而不需要修改原模型。 代理模型就像普通模型一样申明。...通用性规则: 当你克隆一个已存在模型数据表,并且不想要所以原数据表列,配置 Meta.managed=False。这个选项模型化未受 Django 控制数据库视图和表格很有用。... Django 中,模型字段通常不允许这样做。如果一个非抽象模型基类有一个名为 author 字段,你就不能在继承自该基类任何类中,创建另一个名为 author 模型字段属性。

    2.1K10

    Django】 开发:数据库操作和后台管理

    包中,使用前需要先导入 如: from django.db import connection 用创建 cursor 类构造函数创建 cursor 对象,再使用 cursor 对象,为保证在出现异常能释放...类型记录,不便于阅读和判断 在用户自定义模型类中可以重写 方法解决显示问题,如: 自定义模型类中重写 str(self) 方法返回显示文字内容: class Book(models.Model...模型管理器类 ModelAdmin 中实现高级管理功能 list_display 去控制哪些字段会显示 Admin 修改列表页面中。...(设置完成后需要立马更新同步数据库) 2. verbose_name = '单数名' - 给模型对象一个易于理解名称(单数),用于显示/admin管理界面中...3. verbose_name_plural = '复数名' - 该对象复数形式名称(复数),用于显示/admin管理界面中 数据表关联关系映射 常用表关联方式有三种

    4.1K40

    django 1.8 官方文档翻译: 1-2-2 编写你第一个Django应用,第2部分

    哲理 为你员工客户生成添加、修改和删除内容管理性网站是个单调乏味工作。 出于这个原因,Django 根据模型完全自动化创建管理界面。...你可以切换到对应旧版本教程去或者更新到较新 Django 版本。 进入管理网站 现在尝试登录进去。(还记得吗?本教程第一部分时你创建过一个超级用户帐号。...如果你没有创建忘记了密码,你可以 另外创建一个 。) 你将看到 Djaong 管理索引页: 你将看到一些可编辑内容,包括 groups ,users 和 sites 。...不同模型字段类型 (DateTimeField, CharField) 会对应相应 HTML 输入控件。 每一种类型字段 Djaong 管理网站都知道如何显示它们。...要做到这一点,需要使用 list_display 管理选项,这是一个 tuple ,包含了要显示字段名, 将会以列形式该对象 chang lsit 页上列出来:: class PollAdmin

    2.5K40

    Django-DRF | 请求

    Django网络应用开发5项基础核心技术包括模型(Model)设计,URL 设计与配置,View(视图)编写,Template(模板)设计和Form(表单)使用。...默认输入url请求方式即为get,当请求方式为get,若带有需要传递其他参数,则会将该参数name和value补充url中一并提交,post方式则将数据放在内容中一并提交,不再url中显示。...浏览器发送request数据包header中,可以看到这些内容,例如: 一、CBV 视图里使用类处理请求,url中一个路径对应一个类。...import View from django.http import HttpResponse class IndexView(View): # 以get形式访问会执行get函数,一般情况下获取数据...;'put'更新;'patch'局部更新;'delete'删除; CBV 重新定义 dispatch 函数 所有方法都是通过 dispatch 这个函数反射执行,要想在 get post 方法前执行其它步骤

    65820

    Django教程 —— 站点后台管理

    使用Django管理模块,需要按照如下步骤操作: 管理界面本地化 创建管理员 注册模型类 自定义管理页面 1、管理界面本地化 本地化是将显示语言、时间等使用本地习惯,这里本地化就是进行中国化,中国大陆地区使用简体中文...点击用户就可以查看管理员用户表,刚刚创建用户信息就会显示在这。...增加/修改 目前暂时没有图书信息,列表页中点击"增加"可以进入增加页,Django 会根据模型不同,生成不同表单控件,按提示填写表单内容后点击"保存",完成数据创建创建成功后返回列表页。...自定义后台管理界面 列表页只显示出了 BookInfo object ,对象其它属性并没有列出来,查看非常不方便。 Django提供了自定义管理页面的功能。 比如列表页要显示哪些值。...列表页列变成中文,是因为 BookInfo 模型类中属性值给了 verbose_name 参数,如果没有给定则显示类属性名。

    1.6K20
    领券