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

如何在Django中从2个不同的模型对象创建表单对象?

在Django中,从两个不同的模型对象创建表单对象可以通过以下步骤实现:

  1. 首先,确保已经安装了Django并创建了一个Django项目和应用。
  2. 在应用的models.py文件中,定义两个模型对象。例如:
代码语言:python
复制
from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

class Address(models.Model):
    street = models.CharField(max_length=100)
    city = models.CharField(max_length=50)
    state = models.CharField(max_length=2)
    zip_code = models.CharField(max_length=10)
  1. 在应用的forms.py文件中,创建一个表单类,并使用forms.ModelForm创建表单对象。例如:
代码语言:python
复制
from django import forms
from .models import Person, Address

class PersonForm(forms.ModelForm):
    class Meta:
        model = Person
        fields = ['first_name', 'last_name']

class AddressForm(forms.ModelForm):
    class Meta:
        model = Address
        fields = ['street', 'city', 'state', 'zip_code']
  1. 在视图函数中,实例化表单对象并将其传递给模板。例如:
代码语言:python
复制
from django.shortcuts import render
from .forms import PersonForm, AddressForm

def create_person_and_address(request):
    person_form = PersonForm(request.POST or None)
    address_form = AddressForm(request.POST or None)

    if person_form.is_valid() and address_form.is_valid():
        person = person_form.save()
        address = address_form.save()
        # 在此处添加其他逻辑,例如将地址与人员关联起来

    context = {
        'person_form': person_form,
        'address_form': address_form,
    }

    return render(request, 'create_person_and_address.html', context)
  1. 在模板中,使用form标签渲染表单字段。例如,在create_person_and_address.html文件中:
代码语言:html
复制
<form method="post">
    {% csrf_token %}
    {{ person_form.as_p }}
    {{ address_form.as_p }}
   <button type="submit">Submit</button>
</form>
  1. 最后,在urls.py文件中,将视图函数与URL模式关联起来。例如:
代码语言:python
复制
from django.urls import path
from . import views

urlpatterns = [
    path('create_person_and_address/', views.create_person_and_address, name='create_person_and_address'),
]

现在,当用户访问/create_person_and_address/ URL时,他们将看到两个表单:一个用于创建人员,另一个用于创建地址。这就是如何在Django中从两个不同的模型对象创建表单对象。

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

相关·内容

【C++】构造函数分类 ② ( 在不同内存创建实例对象 | 栈内存创建实例对象 | new 关键字创建对象 )

一、在不同内存创建实例对象 1、栈内存创建实例对象 在上一篇博客 【C++】构造函数分类 ① ( 构造函数分类简介 | 无参构造函数 | 有参构造函数 | 拷贝构造函数 | 代码示例 - 三种类型构造函数定义与调用...) , 介绍了 三种类型 构造函数 , 并在 main 函数 分别 调用了这 3 种构造函数 ; 下面的调用方式 , 调用一个构造函数 , 创建 Student 类实例对象 , 最终将实例对象赋值给了...栈内存 变量 Student s1 ; 这些都是在 栈内存 创建实例对象 情况 ; // 调用无参构造函数 Student s1; // 打印 Student s1 实例对象值..., 会自动将栈内存实例对象销毁 ; 栈内存 调用 构造函数 创建 实例对象 , 不需要关注其内存占用 ; 2、堆内存创建实例对象 在 栈内存 声明 类 实例对象 方式是 : 该 s1...创建 MyClass 实例对象 , 则不需要关心 该对象 内存占用情况 , 在这块代码块作用域结束时 , ( 一般是函数大括号内代码执行完毕 ) , 该 栈内存 MyClass 对象会被系统自动销毁

15220

何在Android避免创建不必要对象

在编程开发,内存占用是我们经常要面对现实,通常内存调优方向就是尽量减少内存占用。这其中避免创建不必要对象是一项重要方面。...因此在我们编程时,需要注意到这一点,正确地声明变量类型,避免因为自动装箱引起性能问题。 另外,当将原始数据类型值加入集合时,也会发生自动装箱,所以这个过程也是有对象创建。...关于Java自动装箱与拆箱,参考文章Java自动装箱与拆箱 谨慎选用容器 Java和Android提供了很多编辑容器集合来组织对象。...不要过多创建线程 在android,我们应该尽量避免在主线程执行耗时操作,因而需要使用其他线程。...想要深入了解注解,可以阅读详解Java注解 选用对象池 在Android中有很多池概念,线程池,连接池。包括我们很长用Handler.Message就是使用了池技术。

2.4K20

Ajax创建对象以及不同浏览器兼容性

1.在传统得到web应用,采用都是同步交互方式,为了等待服务器响应,可能需要较长时间,客户体验有时候很不好,而Ajax可以实现异步交互方式。...但是各个浏览器提供创建Ajax方式不同,使得我们需要测试各个浏览器兼容性,这一点比较麻烦。虽然代码比较长,但是固定,可以单独摘出来。...3.创建Ajax对象XMLHttpRequest.由于各个浏览器创建方式不同,所以我们写一个可以兼容各个浏览器方法,在方法里我们实现各个浏览器Ajax对象创建。...但是呢IE浏览器版本不同创建Ajax对象时也不相同,所以Ajax对象创建种类比较多。...ajax对象代码放在show函数里,确保每次点击时候都创建一个新ajax对象

1.1K40

众多Python Web框架比较,哪个适合你,你就用哪个!

在这里,我们给这样框架更高分数:这些框架展示了如何在教程创建整个应用程序,包括常见配方或设计模式,以及超出职责范围(例如提供有关如何运行详细信息) Python变体(PyPy或IronPython...Django文档站点多个角度深入研究框架各个方面。使用Python 3或其他语言,正确安全性,实现常见Web应用程序组件(会话或分页),生成站点地图,它们都被覆盖。...这些系统使用Python类来定义模型,在Web2py,使用构造函数(define_table)来实例化模型。...可以通过Bottle框架对象访问和操作请求和响应数据,cookie,查询变量,来自POST操作表单数据,HTTP标头和文件上载。 每项功能都经过精心细致实施。...Wheezy.web将同一作者创建其他几个库粘合在一起,每个库根据希望应用程序操作提供不同服务。

4.5K20

Django(1)初识Django「建议收藏」

Django采用了MTV框架模式,即模型Model、模板Template和视图(Views),三者之间各自负责不同职责。...模型:数据存取层,处理与数据相关所有事物,例如如何存取、如何验证有效性、包含哪些行为以及数据之间关系等。 模板:表现层,处理与表现相关决定,例如如何在页面或其他类型文档中进行显示。...Django基于MTV设计十分优美,其具有以下特点: 对象映射关系(Object Relational Mapping, ORM):通过定义映射类来构建数据模型,将模型与关系数据库连接起来,使用ORM...URL设计:开发者可以设计任意URL(网站地址),而且还支持使用正则表达式设计 模板系统:提供可扩展模板语言,模板之间具有可继承性 表单处理:可以生成各种表单模型,而且表单具有有效性检验功能 Cache...功能导入由模块Django.urls实现,from Django.urls import include,path,re_path Admin后台系统:支持主流移动设备并新增属性ModelAdmin.autocomplete_fields

2.7K20

37.Django1.11.6文档

实例化、处理和渲染表单Django 渲染一个对象时,我们通常: 在视图中获得它(例如,数据库获取) 将它传递给模板context 使用模板变量将它扩展为HTML 标记 除了几个关键点不同之外...基于这个原因,Django 提供一个辅助类来让你可以Django 模型创建Form。... modelform_factory() 来代替使用类定义来模型直接创建表单。 ...ModelAdmin.ordering 设置ordering以指定如何在Django管理视图中对对象列表进行排序。 这应该是与模型ordering参数格式相同列表或元组。...与上一节详述钩型ModelAdmin方法不同,这五个方法实际上被设计为管理应用程序URL调度处理程序调用为Django视图,以呈现处理模型实例页面CRUD操作。

24.3K80

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

哲理 为你员工或客户生成添加、修改和删除内容管理性网站是个单调乏味工作。 出于这个原因,Django 根据模型完全自动化创建管理界面。...poll 是我们在第一个教程创建: 点击这个”What’s up?” poll 进行编辑: 这有些注意事项: 这表单是根据 Poll 模型自动生成。...不同模型字段类型 (DateTimeField, CharField) 会对应相应 HTML 输入控件。 每一种类型字段 Djaong 管理网站都知道如何显示它们。...通过 admin.site.register(Poll) 注册了 Poll 模型Django 就能构造一个默认 表单。通常情况下,你将要自定义管理表单外观和功能。...这样的话你就需要在注册对象 时告诉 Django 对应配置。 让我们来看看如何在编辑表单上给字段重新排序。

2.5K40

django 1.8 官方文档翻译:13-12 验证器

验证器 编写验证器 验证器是一个可调用对象,它接受一个值,并在不符合一些规则时抛出ValidationError异常。验证器有助于在不同类型字段之间重复使用验证逻辑。...= 0: raise ValidationError('%s is not an even number' % value) 你可以通过字段validators参数将它添加到模型字段...验证器如何运行 关于验证器如何在表单运行,详见表单验证 。关于它们如何在模型运行,详见 验证对象。...要注意验证器不会在你保存模型时自动运行,但是如果你使用ModelForm,它会在任何你表单包含字段上运行你验证器。关于模型验证器如何和表单交互,详见ModelForm 文档。...内建验证器 django.core.validators模块包含了一系列可调用验证器,用于模型表单字段。它们在内部使用,但是也可以用在你自己字段上。

1.7K30

Django之文件上传下载

此字典每个条目都是UploadedFile对象(或子类) – 上传文件简单包装器。UploadedFile对象是对Python file对象一个简单封装,并带有Django特定附加功能。...UploadedFile对象拥有下列属性和方法: HttpRequest.FILES 表单上传文件对象存储在类字典对象request.FILES表单格式需为multipart/form-data...在Django我们可以采用Form类来处理表单,通过实例化处理和在模板渲染,就可以轻松完成表单需求。...然后给这个handle_upload_file函数传递一个“request.FILES[‘file’]”,就是我们获取到文件;也可以表单获取到,比如使用form提供files或cleaned_data...在app下admin.py中将需要上面创建模型进行添加。

3.2K40

Django 2.1.7 视图 - HttpReqeust对象、QueryDict对象

关于视图篇章 Django 2.1.7 视图 Django 2.1.7 MVT模型示例 - 查询数据,返回渲染模板数据 Django 2.1.7 视图 - 自定义404错误、500错误 在前面的篇章基本讲述了视图使用...,那么本篇章主要是来看看DjangoHttpReqeust对象。...HttpReqeust对象 服务器接收到http协议请求后,会根据报文创建HttpRequest对象,这个对象不需要我们创建,直接使用服务器构造好对象就可以。...在浏览器给出地址发出请求采用get方式,超链接。 在浏览器中点击表单提交按钮发起请求,如果表单method设置为post则为post请求。...QueryDict对象 定义在django.http.QueryDict HttpRequest对象属性GET、POST都是QueryDict类型对象 与python字典不同,QueryDict类型对象用来处理同一个键带有多个值情况

1.5K20

Django 3.1 官网学习路线

在本教程,我们不会使用 Django 此功能。 path() argument: name 通过命名 URL,您可以 Django 其他地方明确地引用它,特别是在模板。...migrate 命令只会在 INSTALLED_APPS 运行应用程序迁移。 创建模型 在我们投票应用程序,我们将创建两个模型: 问题和选择。问题有问题和发布日期。...不同模型字段类型(DateTimeField、CharField)对应于适当 HTML 输入小部件。每种类型字段都知道如何在 Django 管理显示自己。... 第五部分:自定义管理表单 通过将问题模型注册为 admin.site.register(Question),Django 能够构造一个默认表单表示。...通常,您需要定制管理表单外观和工作方式。可以通过在注册对象时告诉 Django 所需选项来实现。 通过重新排列编辑表单字段来了解其工作原理。

8.1K10

django之文件上传下载等相关

,就会在这里显示了 Django处理文件上传File Uploads HttpRequest.FILES 表单上传文件对象存储在类字典对象request.FILES表单格式需为multipart...二、基于表单上传文件 在Django我们可以采用Form类来处理表单,通过实例化处理和在模板渲染,就可以轻松完成表单需求,采用django表单处理方式,能帮我们省去很多工作,比如验证不能为空...大多数时候,你将只是简单地request向表单传递数据,就像Binding uploaded files to a form描述那样。...然后给这个handle_upload_file函数传递一个“request.FILES[‘file’]”,就是我们获取到文件;也可以表单获取到,比如使用form提供files或cleaned_data...1 python manage.py createsuperuser   根据提示进行创建。在app下admin.py中将需要上面创建模型进行添加。

3.1K30

初探Django框架

(默认情况下Django 会自动对 views.py 传到HTML文件标签跳转标签, script标签语法进行转义,令其语义失效)。...Django 模型使用自带 对象关系映射ORM(Object Relational Mapping )用于实现面向对象编程语言里不同类型系统数据之间转换(其实就是数据库系统三级映射模式外模式/...pymysql.install_as_MySQLdb() 创建 APP Django 规定,如果要使用模型,必须要创建一个 app。...Django 表单 GET 方法 我们在之前项目中创建一个 /HelloWorld/HelloWorld/search.py文件(视图结构),用于接收用户请求: from django.http import...View文件即可 区别就与POST传输数据要将form表单method方法get改为post, 同时接收参数视图通过修改request.GET变为request.POST获取数据POST传输过来数据

2K20

django 1.8 官方文档翻译:13-1-2 使用Django认证系统

Django认证框架只存在一种类型用户,因此诸如'superusers'或管理员'staff'用户只是具有特殊属性集user对象,而不是不同类型user对象。...当django.contrib.auth在你INSTALLED_APPS设置列出时,它将确保为你安装应用每个Django模型创建3个默认权限 – add、change和delete。...这些权限将在你运行manage.py migrate时创建;在添加django.contrib.auth到INSTALLED_APPS之后,当你第一次运行migrate时,将会为之前安装模型创建默认权限...它接受一个HttpRequest对象和一个User对象。login()使用Django会话框架保存用户ID在会话。 注意任何在匿名会话设置数据都会在用户登入后会话中都会记住。...可以像其它任何Django模型一样创建和删除用户。可以创建组,并分配权限给用户和组。admin还会保存和显示对用户模型编辑日志。

4.6K20

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

Django 会处理表单工作三个显著不同部分: 准备并重新构造数据 为数据创建HTML 表单 接收并处理客户端提交表单和数据 可以手工编写代码来实现,但是Django 可以帮你完成所有这些工作。...Django 模型描述一个对象逻辑结构、行为以及展现给我们方式,与此类似,Form 类描述一个表单并决定它如何工作和展现。...实例化、处理和渲染表单Django 渲染一个对象时,我们通常: 在视图中获得它(例如,数据库获取) 将它传递给模板上下文 使用模板变量将它扩展为HTML 标记 在模板渲染表单和渲染其它类型对象几乎一样...在模型实例不包含数据情况下,在模板对它做处理很少有什么用处。但是渲染一个未填充表单却非常有意义 —— 我们希望用户去填充它。 所以当我们在视图中处理模型实例时,我们一般数据库获取它。...模型创建表单 ModelForm 模型表单集 Inline formsets 表单集(Media 类) Assets as a static definition Media as a

4.2K20

Django内置通用类视图及实例

,各种有用对象被存储在self上,同request(self.request)一样,其中包含了URLconf获取到位置参数(self.args)和关键字参数(self.kwargs)....None):返回该视图要显示单个对象.如果提供了queryset,该queryset将作为对象查询源,否则,将使用get_queryset().get_object()视图所有参数查找pk_url_kwarg...get_context_data(**kwargs):返回显示对象上下文数据. 4.CreateView ? 显示用于创建对象表单视图,通过验证错误信息重新显示视图,并且保存对象....显示用于编辑现有对象表单视图,重新显示具有验证错误信息视图,并且保存对象.这里使用对象模型自动生成表单(除非手动制定表单类)....实例 1、创建django工程,创建名为crudapp,此处略过 2、 修改models.py class employee(models.Model): id = models.IntegerField

2.9K40
领券