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

如何在相关模型上创建多个select (在CreateView上)到一个外键?

在相关模型上创建多个select (在CreateView上)到一个外键的方法有以下几种:

  1. 使用ModelForm:在CreateView中使用ModelForm来生成表单,通过为每个外键字段创建一个选择框(select)来选择相关的模型对象。首先,在表单类中定义外键字段为选择框类型,并设置queryset属性为相关模型的所有对象。然后,在CreateView中指定form_class为自定义的表单类。
代码语言:txt
复制
from django import forms
from django.views.generic.edit import CreateView
from .models import Model1, Model2

class MyForm(forms.ModelForm):
    class Meta:
        model = Model1
        fields = '__all__'

    model2_1 = forms.ModelChoiceField(queryset=Model2.objects.all(), label='Model2 1')
    model2_2 = forms.ModelChoiceField(queryset=Model2.objects.all(), label='Model2 2')

class MyCreateView(CreateView):
    model = Model1
    form_class = MyForm
    template_name = 'my_template.html'
    success_url = '/success/'

    def form_valid(self, form):
        # 处理表单提交
        return super().form_valid(form)
  1. 重写get_context_data方法:在CreateView中重写get_context_data方法,将需要选择的相关模型对象传递给模板,然后在模板中使用选择框(select)来选择相关模型对象。首先,在CreateView中重写get_context_data方法,在该方法中获取相关模型的所有对象,并将它们作为上下文数据传递给模板。然后,在模板中使用选择框(select)来选择相关模型对象。
代码语言:txt
复制
from django.views.generic.edit import CreateView
from .models import Model1, Model2

class MyCreateView(CreateView):
    model = Model1
    fields = '__all__'
    template_name = 'my_template.html'
    success_url = '/success/'

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['model2_objects'] = Model2.objects.all()
        return context
代码语言:txt
复制
<!-- my_template.html -->
<form method="post">
  {% csrf_token %}
  {{ form.as_p }}
  <label for="id_model2_1">Model2 1:</label>
  <select id="id_model2_1" name="model2_1">
    {% for model2_obj in model2_objects %}
      <option value="{{ model2_obj.pk }}">{{ model2_obj }}</option>
    {% endfor %}
  </select>
  <label for="id_model2_2">Model2 2:</label>
  <select id="id_model2_2" name="model2_2">
    {% for model2_obj in model2_objects %}
      <option value="{{ model2_obj.pk }}">{{ model2_obj }}</option>
    {% endfor %}
  </select>
  <button type="submit">Submit</button>
</form>

以上两种方法可以根据具体情况选择适合的方式来实现在相关模型上创建多个选择框(select)到一个外键。根据需求和场景的不同,选择相应的方法进行实现。对应的腾讯云产品可以参考腾讯云的云服务器CVM(https://cloud.tencent.com/product/cvm)、弹性伸缩Auto Scaling(https://cloud.tencent.com/product/as)、云数据库MySQL(https://cloud.tencent.com/product/cdb_mysql)、对象存储COS(https://cloud.tencent.com/product/cos)等。

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

相关·内容

django中ModelForm多表单组合的解决方案

ContextMixincontext上下文中加入’view’元素,值为self实例。 ProcessFormViewGET请求渲染表单,POST请求上解析form表单实例。...所以,在用CreateView一个模型一个模板实现添加一行记录的功能时是多么简单,因为这些父类会自动生成object,渲染模板,解析form表单,save数据库中。...所以,从模型创建出的表单ModelForm,配合上通用视图后,威力巨大!! 4、多个ModelForm一个form里提交 终于可以回到本文的主题了。...,此时是不能save的,因为project和address对应的数据库记录还没有创建,所以commit传为False           contract = form.save(commit=False...#按照四条数据库记录的顺序依次的创建(调用save方法)、主键赋下一条记录的中、下一次记录创建(save)           projectAddress = context['projectAddressForm

3.4K20

【Django | 开发】面试招聘信息网站(用户登录注册&投在线递简历)

文章目录 一、候选人登录注册 二、创建建立模型 三、用户在线投递简历 1)创建视图与模板 2) 优化表单细节 让简历进入面试流程 一、候选人登录注册 方法一:使用django-registraion-reduex...用户模型扩展✨ ✨【Django | allauth】重写allauth重置密码方法✨ 二、创建建立模型 jobs应用中添加如下模型 class Resume(models.Model):...个人能力', {'fields': ('candidate_introduction', 'work_experience', 'project_experience'),} )) # 保存简历...创建类视图(与之前的函数不一样) 这里的类试图有很多写好的基类视图,detailview,listview等 官方文档 # 类视图 class ResumeCreateView(LoginRequiredMixin...: none; -moz-user-select: none; -ms-user-select: none; user-select: none;

89410
  • MySQL 常见的面试题及其答案

    5、什么是是一种用于建立两个表之间关联的字段。通常指向另一个表中的主键。 6、什么是索引? 索引是一种用于加速查询的数据结构。它可以使得数据库查找数据时更快地定位需要的数据。...20、如何在MySQL中创建和使用存储过程? 存储过程是一组预编译SQL语句,可以MySQL服务器执行。...MySQL中,只有使用InnoDB存储引擎才支持事务,MyISAM存储引擎不支持事务。 23、如何在MySQL中实现约束? MySQL实现约束可以使用FOREIGN KEY约束。...MySQL中实现约束的方法: 创建表时,使用FOREIGN KEY约束指定,指向另一个表的主键。 约束可以CREATE TABLE或ALTER TABLE语句中指定。...MySQL复制过程中,数据可以从主数据库复制一个多个从数据库,这些从数据库称为复制节点。 MySQL复制通常由以下几个组件组成: 主数据库:包含原始数据的MySQL数据库实例。

    7.1K31

    mysql 账户权限查询

    Createuser权限代表允许创建、修改、删除、重命名user的权限 Createview权限代表允许创建视图的权限 Delete权限代表允许删除行数据的权限 Drop权限代表允许删除数据库、表、视图的权限...,包括truncatetable命令 Event权限代表允许查询,创建,修改,删除MySQL事件 Execute权限代表允许执行存储过程和函数的权限 File权限代表允许MySQL可以访问的目录进行读写磁盘文件操作...限 Index权限代表是否允许创建和删除索引 Insert权限代表是否允许表里插入数据,同时执行analyze table,optimize table,repair table语句的时候也需要insert...权限是5.7.6版本之后引入,代表是否允许创建 Reload权限代表允许执行flush命令,指明重新加载权限表系统内存中, refresh命令代表关闭和重新开启日志文件并刷新所有的表 Replication...权限代表允许从表中查看数据,某些不查询表数据的select执行则不需 要此权限,Select 1+1,Select PI()+2;而且select权限执行update/delete 语句中含有where

    11510

    django 1.8 官方文档翻译: 3-4-3 使用基于类的视图处理表单

    form_valid()的默认实现只是简单地重定向success_url。 模型的表单 通用视图在于模型一起工作时会真正光芒四射。...这些通用的视图将自动创建一个ModelForm,只要它们能知道使用哪一个模型类: 如果给出model属性,则使用该模型类。 如果get_object() 返回一个对象,则使用该对象的类。...Changed in Django 1.8: 省略fields 属性以前是允许的,但是导致表单带有模型的所有字段。...模型和request.user 为了跟踪使用CreateView 创建一个对象的用户,你可以使用一个自定义的ModelForm 来实现这点。...首先,向模型添加关联: #models.py from django.contrib.auth.models import User from django.db import models class

    1.8K20

    Python 高级笔记第二部分:数据库的概述和MySQL数据表操作

    数据库是在数据库管理系统管理和控制下,一定介质的数据集合。 数据库管理系统 :管理数据库的软件,用于建立和维护数据库。...像是MySql 关系型数据库和非关系型数据库 关系型: 采用关系模型(二维表)来组织数据结构的数据库 ,Oracle 、SQL_Server、 MySQL 非关系型: 不采用关系模型组织数据结构的数据库...注意 通常我们只经常进行查询操作的字段创建索引 对于数据量很少的表或者经常进行写操作而不是查询操作的表不适合创建索引 ⭐️索引分类 普通索引(MUL):字段值无约束,KEY标志为 MUL 唯一索引...注:约束是一种限制,它通过对表的行或列的数据做出限制,来确保表的数据的完整性、关联性 约束分主表和从表:若同一个数据库中,B表的与A表的主键相对应,则A表为主表,B表为从表。...✨创建 [CONSTRAINT 键名称] FOREIGN KEY 从表 REFERENCES 主表名(主表主键) -- 从表的字段数据类型与指定的主表主键应该相同。

    1.8K20

    Spring MVC各组件近距离接触--下--04

    我们需要为添加到ModelAndView的一组或者多组模型数据提供相应的(Key),以便具体的View实现类可以根据这些获取具体的模型数据,然后公开给视图模板。...但不管什么视图类型,对应的视图模板都将可以通过添加到ModelAndView的模型数据的来获取模型数据,并合并到最终的视图输出结果中。...isCache()) { //如果没有开启缓存,那么每次都新创建一个View实例 return createView(viewName, locale); } else {...View实例 view = createView(viewName, locale); //如果创建失败了,那么缓存也会记录,避免下次重复尝试创建 if (view...实际,DispatcherServlet不但可以接受多个HandlerMapping以处理Web请求具体Handler的映射,也可以接受多个 ViewResolver以处理视图的查找。

    42340

    115道MySQL面试题(含答案),从简单深入!

    解释MySQL中的是一种数据库约束,用于建立两个表之间的关系。一个表中的会指向另一个表的主键。的主要作用是维护跨表的数据完整性,确保参照完整性。11....MySQL中实现主从复制涉及以下步骤: - 主服务器配置唯一的服务器ID,开启二进制日志记录。 - 在从服务器设置唯一的服务器ID,配置主服务器的相关信息(主服务器IP、登录凭证)。...分区可以提高性能,因为: - 查询可以仅在相关一个或几个分区运行,而不是整个表。 - 分区也可以不同的磁盘上进行,提高I/O性能。...- 考虑性能影响,可能需要在低峰时间进行。 - 重新设计之前,通过建立临时表进行测试。 - 更新应用程序中相关的SQL语句。这是一个敏感操作,需要谨慎处理,以避免数据完整性问题。54....MySQL中,分布式事务通常通过XA事务实现,它允许多个数据库资源参与一个全局事务中。67. 如何在MySQL中实现数据压缩?

    16410

    Citus 分布式 PostgreSQL 集群 - SQL Reference(创建和修改分布式表 DDL)

    worker 创建的 shard 副本与 coordinator 的表具有相同的表 schema、索引和约束定义。创建副本后,此函数将所有分布式元数据保存在协调器。...复制分布式表中可以避免协调节点的空间不足。 共置表 共置是一种策略性地划分数据的做法,将相关信息保存在同一台机器以实现高效的关系操作,同时利用整个数据集的水平可扩展性。...数据库约束 https://www.postgresql.org/docs/current/static/ddl-constraints.html 在这些情况下可能会创建两个本地(非分布式)表之间...Citus 支持从本地引用表的所有引用操作,但不支持反向支持 ON DELETE/UPDATE CASCADE(引用本地)。 主键和唯一性约束必须包括分布列。...这个例子展示了如何在分布式表创建主键和: -- -- Adding a primary key -- -------------------- -- We'll distribute these

    2.8K20

    数据库初识--从MySQL 出发

    前两模型较不常见,所以主要考虑 关系模型。    (2)关系数据库            关系是一个带有属性的表,这个表称为关系表,一组表组成一 数据库。           ...(3)的选用            主键(Primary Key)  组合 (Concatenated Key) 候选 (Candidate Key) (Foreign Key) ?...(myView),就是某种意义的“整合”:     create view myView as select id,name from book;    接下来 select * from myView...还可换成 limit 1,3; 代表区间1 ~ 3 ;           模糊查询(like):与通配符“%” 和下划线 “_"搭配使用,前者配一个多个字符,后者只配一个字符。                        ... select * from book where name like('_k%');           联合多列(concat) :就是把某些元素联合在一起:作为一个新的“列”?

    1.3K20

    ASP.NET MVC5高级编程——(3)MVC模式的模型

    个数: 主键只能有一个 一个表可以有多个 因为这个主外属性对于理解后面的EF框架(ORM)很有帮助,所以这里我们多讲一些!...这是为了给EF框架提供一个钩子,即方便模型数据库的映射,不理解就记住,后面的项目会详细讲解。 从上面三个类的代码可以看到,红色标记的是主键,而黄色的就是。...而称ArtistID属性为属性(foreign key),因为与模型对应的数据库中,专辑表(Album)和艺术家(Artist)表存在对应的关系,即ArtistID是Album表的!...这时浏览器会自动收集用户表单输入中的所有信息并将这些值(及其相关的name属性值)放在请求中一起发送。这里注意input和select元素的name属性,需要和Album模型中的属性匹配。...ASP.NET MVC中可以通过使用Bind属性限制可被更新的Model属性。绑定多个字段中的部分字段:通过Bind属性来定义Model中需要绑定哪些字段。

    4.8K40

    nio学习之Selector选择器

    nio学习之Selector选择器 Selector选择器 三个相关的类 如何创建选择器 SelectionKey选择相关的方法 选择器的使用 服务器端模板代码 selector.select()方法阻塞问题...注意FileChannel不是SelectablChannel的子类,即FileChannel不是可选择的,可选择通道可以注册多个选择器,但是同一个选择器只能注册一次。...SelectionKey选择类,封装了特定的通道与选择器之间的一种注册关系,选择包含两个比特集,一个指示该注册关系所关心的通道操作,一个表示通道已经准备好的 操作 如何创建选择器 1.创建Selector...Channel通道时,就会返回一个SelectionKey选择对象,这个选择表示一个通道与一个选择器之间的注册关系 SelectionKey相关方法: channel()方法,返回与该对应的通道...java.nio.channels.Selector就是模型中事件的观察者,可以将多个SocketChannel的事件注册一个Selector,当没有事件发生时Selector处于阻塞状态,当SocketChannel

    49810

    马哥金牌分享 | 十分钟学会用Django快速搭建一个blog

    但是Django中,控制器接受用户输入的部分由框架自行处理,所以Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为MTV模式。...1.1 Django的结构模型 层次 职责 模型(Model)数据存取层 处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。...视图(View)表现层 处理与表相关的决定: 如何在页面或其他类型文档中进行显示。 模板(Template),业务逻辑层 存取模型及调取恰当模板的相关逻辑。模型与模板的桥梁。...表之间是否需要进行关联?...表之间的关系: 一个用户可以发表多篇文章 一个分类里面也多篇文章 分类和用户没有直接的关系 理清这些之后,现在开始编写对应的model模型 2.3 编写models.py 2.4 创建和同步数据库 3

    2.4K51

    Android ListView 与 RecyclerView 对比浅析--缓存机制

    同时也希望能通过本文,让大家快速了解RecyclerView与ListView缓存机制的一些区别,使用上也更加得心应手吧。...层级不同: RecyclerView比ListView多两级缓存,支持多个离ItemView缓存,支持开发者自定义缓存处理逻辑,支持所有RecyclerView共用同一个RecyclerViewPool...RecyclerView的优势在于a.mCacheViews的使用,可以做到屏幕的列表项ItemView进入屏幕内时也无须bindView快速重用;b.mRecyclerPool可以供多个RecyclerView...共同使用,特定场景下,viewpaper+多个列表页下有优势.客观来说,RecyclerView特定场景下对ListView的缓存机制做了补强和完善。...三.结论 一些场景下,界面初始化,滑动等,ListView和RecyclerView都能很好地工作,两者并没有很大的差异: 文章的开头便抛出了这样一个问题,微信Android客户端卡券模块,大部分UI

    1.3K20

    Android ListView 与 RecyclerView 对比浅析:缓存机制

    同时也希望能通过本文,让大家快速了解RecyclerView与ListView缓存机制的一些区别,使用上也更加得心应手吧。...层级不同: RecyclerView比ListView多两级缓存,支持多个离ItemView缓存,支持开发者自定义缓存处理逻辑,支持所有RecyclerView共用同一个RecyclerViewPool...RecyclerView的优势在于a.mCacheViews的使用,可以做到屏幕的列表项ItemView进入屏幕内时也无须bindView快速重用;b.mRecyclerPool可以供多个RecyclerView...共同使用,特定场景下,viewpaper+多个列表页下有优势.客观来说,RecyclerView特定场景下对ListView的缓存机制做了补强和完善。...三.结论 1、一些场景下,界面初始化,滑动等,ListView和RecyclerView都能很好地工作,两者并没有很大的差异: 文章的开头便抛出了这样一个问题,微信Android客户端卡券模块,大部分

    6.7K41

    数据库系统与数据挖掘的区别_数据挖掘与大数据的关系

    :某个关系的主键相应的属性另一关系中出现,此时该主键就是另一关系的,如有两个关系S和SC,其中S#是关系S的主键,相应的属性S#关系SC中也出现,此时S#就是关系SC的。...查询时,SELECT语句可以有多种写法,联接查询、嵌套查询和使用存在量词的嵌套查询等。最好都掌握,但是起码应能写出一种正确的查询语句。...约束:可用键子句来定义 FOREIGN KEY (S#) REFERNCE S(S#) 属性值约束:包括非空值约束(NOT NULL)和基于属性的检查子句(CHECK) 及域约束子句 CREAT...:某个关系的主键相应的属性另一关系中出现,此时该主键就是另一关系的,如有两个关系S和SC,其中S#是关系S的主键,相应的属性S#关系SC中也出现,此时S#就是关系SC的。...约束:可用键子句来定义 FOREIGN KEY (S#) REFERNCE S(S#) 属性值约束:包括非空值约束(NOT NULL)和基于属性的检查子句(CHECK) 及域约束子句 CREAT

    1.2K60

    分布式 PostgreSQL 集群(Citus),分布式表中的分布列选择最佳实践

    您可以保留所需的关系语义,例如 联接、约束、事务、ACID 和一致性。 示例:为其他企业托管店面的网站,例如数字营销解决方案或销售自动化工具。 特征:与单个租户相关的查询,而不是跨租户加入信息。...运行将所有相关数据放置同一节点的查询称为 Table Co-Location。 下图说明了多租户数据模型中的共置(co-location)。...虽然它没有以分布式方式提供 PostgreSQL 的全部功能,但在许多情况下,它可以通过托管单台机器充分利用 PostgreSQL 提供的功能,包括完整的 SQL 支持、事务和。...聚合 分布式外部联接(outer join) Pushdown CTEs(要求 PostgreSQL >=12 ) 数据共置是一种强大的技术,可以为关系数据模型提供水平扩展和支持。...有关迁移现有数据库的更多信息,请参阅过渡到多租户数据模型。 查询性能 Citus 通过将传入查询分解为多个工作分片并行运行的片段查询(“任务”)来并行化传入查询。

    4.5K20

    Gorm 关联关系介绍与基本使用

    4.7 自3定义连接表 4.8 约束 4.9 复合 五、实体关联 5.1 自动创建、更新 5.2 跳过自动创建、更新 5.3 Select/Omit 关联字段 5.4 关联模式 5.4.1 查找关联...默认情况下, CompanyID 被隐含地用来 User 和 Company 之间创建一个关系, 因此必须包含在 User 结构体中才能填充 Company 内部结构体。...默认的键名是拥有者的类型名加上其主键字段名 例如,要定义一个属于 User 的模型,则其外应该是 UserID。...reference: users.refer // foreign key: profile_refer, reference: profiles.user_refer 注意: 某些数据库只允许唯一索引字段创建...Select 来删除 many2many 关系的记录,查看 Delete with Select 获取详情 4.9 复合 如果您的模型使用了 复合主键,GORM 会默认启用复合

    47510
    领券