EmergencyFormset = modelformset_factory(Emergency, form=EmergencyStaticModelForm, extra=0) EmergencyFormset = EmergencyFormset(queryset=emergency_list)是在干什么,为什么赋了两次值

时间: 2024-03-14 09:49:50 浏览: 14
在这段代码中,`modelformset_factory`函数用于创建一个表单集合类,用于批量处理`Emergency`模型的表单。`form`参数指定使用的表单类,`extra`参数指定要显示的表单数量。 第一次赋值`EmergencyFormset = modelformset_factory(Emergency, form=EmergencyStaticModelForm, extra=0)`创建了一个`Emergency`模型的表单集合类`EmergencyFormset`,并指定了使用`EmergencyStaticModelForm`作为表单类,`extra=0`表示不显示额外的空表单。 第二次赋值`EmergencyFormset = EmergencyFormset(queryset=emergency_list)`则是将`EmergencyFormset`实例化,并通过`queryset`参数指定了要显示的查询集,即`emergency_list`。这样就创建了一个包含所有`Emergency`表单的表单集合类`EmergencyFormset`实例。 因此,这两次赋值的作用是创建一个`Emergency`模型的表单集合类,并将查询集指定为`emergency_list`。
相关问题

def staff_detail(request, nid): """ 员工个人详情页面 """ staff_info = models.StaffInfo.objects.filter(RES_ID=nid).first() # emergency_info = models.Emergency.objects.filter(res_id=nid).first() EmergencyFormset = forms.modelformset_factory(model=Emergency, form=EmergencyStaticModelForm, extra=0) EmergencyFormset = EmergencyFormset(queryset=staff_info.emergency_list.all()) StaffForm = StaffStaticModelForm(instance=staff_info) # EmergencyForm = EmergencyStaticModelForm(instance=emergency_info) return render(request, "staff_detail.html", {"StaffForm": StaffForm, "EmergencyFormset": EmergencyFormset})有什么问题

这段代码展示了一个员工信息详情页面的视图函数,但是其中的 EmergencyFormset 变量似乎没有必要定义两次。第一次定义是将 EmergencyFormset 设置为一个 modelformset_factory 对象,第二次定义又将其重新赋值为一个 queryset,这样会覆盖掉第一次的定义。建议只使用一次定义即可,将 EmergencyFormset 直接赋值为一个 queryset 或者 modelformset_factory 对象。

def staff_detail(request, nid): """ 员工个人详情页面 """ staff_info = models.StaffInfo.objects.filter(RES_ID=nid).first() emergency_info = models.Emergency.objects.filter(res_id=nid).first() print(emergency_info) print(staff_info) StaffForm = StaffStaticModelForm(instance=staff_info) EmergencyForm = EmergencyStaticModelForm(instance=emergency_info) return render(request, "staff_detail.html", {"StaffForm": StaffForm, "EmergencyForm": EmergencyForm})这段代码目前能显示一条与StaffInfo关联的Emergency数据,如何得到所有关联的Emergency?

可以使用`ForeignKey`的`related_name`属性来获取所有关联的Emergency数据。在`StaffInfo`模型中,可以将`Emergency`模型的外键设置为`staff_info`,并给它设置一个`related_name`属性。然后在查询`StaffInfo`对象时,可以通过该属性来获取所有关联的`Emergency`对象。 具体实现代码如下: ```python class StaffInfo(models.Model): # ... class Emergency(models.Model): staff_info = models.ForeignKey(StaffInfo, related_name='emergency_list', on_delete=models.CASCADE) # ... def staff_detail(request, nid): staff_info = models.StaffInfo.objects.filter(RES_ID=nid).first() emergency_list = staff_info.emergency_list.all() StaffForm = StaffStaticModelForm(instance=staff_info) EmergencyFormset = modelformset_factory(Emergency, form=EmergencyStaticModelForm, extra=0) EmergencyFormset = EmergencyFormset(queryset=emergency_list) return render(request, "staff_detail.html", {"StaffForm": StaffForm, "EmergencyFormset": EmergencyFormset}) ``` 在`Emergency`模型中,设置`staff_info`为`StaffInfo`模型的外键,并设置`related_name`为`emergency_list`。在`staff_detail`视图函数中,使用`emergency_list`变量来获取所有关联的`Emergency`对象,并将其传递给`EmergencyFormset`。然后在模板中使用`{{ EmergencyFormset }}`来渲染所有的`Emergency`表单。

相关推荐

from django.contrib import admin from django.urls import reverse from django.utils.html import format_html from django.shortcuts import redirect from .models import Drug @admin.register(Drug) class DrugAdmin(admin.ModelAdmin): change_list_template = 'admin/drug/change_list.html' def get_urls(self): urls = super().get_urls() custom_urls = [ path('import-csv/', self.import_csv), ] return custom_urls + urls def import_csv(self, request): if request.method == 'POST': # TODO: import CSV data self.message_user(request, 'CSV data imported successfully') return redirect('..') return render(request, 'admin/drug/import_csv.html') def changelist_view(self, request, extra_context=None): if not request.GET.get('ordering'): # set default ordering request.GET = request.GET.copy() request.GET['ordering'] = 'name' return super().changelist_view(request, extra_context=extra_context) def interaction_display(self, obj): return format_html('{}', obj.interaction) interaction_display.short_description = 'Interaction' def get_actions(self, request): actions = super().get_actions(request) del actions['delete_selected'] return actions def delete_model(self, request, obj): # TODO: delete model pass def delete_selected(self, request, queryset): # TODO: delete selected models pass def get_queryset(self, request): qs = super().get_queryset(request) qs = qs.order_by('name') return qs def add_view(self, request, form_url='', extra_context=None): self.change_list_template = None return super().add_view(request, form_url=form_url, extra_context=extra_context) def change_view(self, request, object_id, form_url='', extra_context=None): self.change_list_template = None return super().change_view(request, object_id, form_url=form_url, extra_context=extra_context) def delete_view(self, request, object_id, extra_context=None): self.change_list_template = None return super().delete_view(request, object_id, extra_context=extra_context) 需要添加什么html文件

最新推荐

recommend-type

python实现合并多个list及合并多个django QuerySet的方法示例

主要介绍了python实现合并多个list及合并多个django QuerySet的方法,结合实例形式分析了Python使用chain合并多个list以及合并Django中多个QuerySet的相关操作技巧,需要的朋友可以参考下
recommend-type

django 数据库返回queryset实现封装为字典

主要介绍了django 数据库返回queryset实现封装为字典,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB正态分布协方差分析:揭示正态分布变量之间的协方差

![MATLAB正态分布协方差分析:揭示正态分布变量之间的协方差](https://site.cdn.mengte.online/official/2021/11/20211128213137293.png) # 1. 正态分布概述 正态分布,又称高斯分布,是统计学中最重要的连续概率分布之一。它广泛应用于自然科学、社会科学和工程领域。 正态分布的概率密度函数为: ``` f(x) = (1 / (σ√(2π))) * exp(-(x - μ)² / (2σ²)) ``` 其中: - μ:正态分布的均值 - σ:正态分布的标准差 - π:圆周率 正态分布具有以下特性: - 对称性:
recommend-type

我正在开发一款个人碳足迹计算app,如何撰写其需求分析文档,请给我一个范例

为了更全面、清晰地定义个人碳足迹计算app的需求,需求分析文档应该包含以下内容: 1.项目简介:对该app项目的概述及目标进行说明。 2.用户分析:包括目标用户群、用户需求、行为等。 3.功能需求:对app的基本功能进行定义,如用户登录、数据录入、数据统计等。 4.非功能需求:对使用app的性能和质量等进行定义,如界面设计、数据安全、可扩展性等。 5.运行环境:包括app的开发环境和使用环境。 下面是一个范例: 需求分析文档 1. 项目简介 该app项目旨在为用户提供一款方便、易用、可定制的个人碳足迹计算平台,以促进环保和可持续性发展。 2. 用户分析 目标用户群:全球关
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依
recommend-type

MATLAB正态分布相关性分析:探索正态分布变量之间的关联

![MATLAB正态分布相关性分析:探索正态分布变量之间的关联](https://img-blog.csdnimg.cn/bd5a45b8a6e94357b7af2409fa3131ab.png) # 1. MATLAB中正态分布的理论基础 正态分布,又称高斯分布,是一种常见的概率分布,其概率密度函数为: ``` f(x) = (1 / (σ√(2π))) * e^(-(x-μ)² / (2σ²)) ``` 其中,μ表示正态分布的均值,σ表示标准差。正态分布具有以下特点: - **对称性:**正态分布的概率密度函数关于均值μ对称。 - **钟形曲线:**正态分布的概率密度函数呈钟形曲线
recommend-type

我现在需要学习基于opencv和mediapipe并且是python的手势识别,我该如何系统的学习呢

你可以先了解一下opencv和mediapipe的基本使用方法和常见功能,然后学习手势识别的算法和方法。具体学习的过程可以包括以下步骤: 1. 学习opencv的基本操作,例如读取、保存、处理图像的方法,以及如何进行图像的降噪、二值化、边缘检测等操作。 2. 学习mediapipe的使用方法,了解如何使用它进行姿势估计和手部检测。 3. 学习手势识别的算法和方法,了解如何识别手部的姿势和手势动作,并进行分类和识别。 4. 进行实践,尝试编写基于opencv和mediapipe的手势识别代码,对不同类型的手势进行识别和分类。 5. 继续学习和研究,扩展自己的知识和技能,探索更深入和复杂