def staff_detail(request, nid): """ 员工个人详情页面 """ # 获取员工信息 staff_info 和它对应的 StaffForm staff_info = models.StaffInfo.objects.filter(RES_ID=nid).first() StaffForm = StaffStaticModelForm(instance=staff_info) # 获取员工对应的 Emergency 的集合 # emergency_info = models.Emergency.objects.filter(res_id=nid).all() # EmergencyForm = EmergencyStaticModelForm(instance=emergency_info) EmergencyFormSet = forms.inlineformset_factory(models.StaffInfo, models.Emergency, fields='__all__')(instance=staff_info) print(EmergencyFormSet) return render(request, "staff_detail.html", {"StaffForm": StaffForm, "EmergencyFormSet": EmergencyFormSet})为什么这段代码得到的EmergencyFormSet会有几个空值
时间: 2024-03-14 16:49:18 浏览: 74
可能是因为员工对应的 Emergency 信息没有被创建或者被删除了,所以在 EmergencyFormSet 中会存在一些空值。可以在模板中判断是否存在 Emergency 信息,如果不存在则不显示对应的表单。另外,也可以在视图中加入判断逻辑,如果不存在对应的 Emergency 信息则创建一个空的 Emergency 对象,以保证 EmergencyFormSet 中不会出现空值。
相关问题
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 对象。
elif select==5: print("{:*^20}".format("进入模块5.根据条件查询")) print("1.按学号查询") print("2.按姓名查询") print("3.按名次查询") c=eval(input("请输入您的选择(1-3)")) def find_info(): findfile_info=open("C:\\Users\\ASUS\\Desktop\\student.txt","r",encoding="UTF-8") # 以可读方式打开文件 line_info=findfile_info.readlines() find_nid=c if find_nid == '1': find_id = input('请输入学生学号:') for line in line_info: if find_id in line: print(line) elif find_nid == '2': find_name = input('请输入学生姓名:') for line in line_info: if find_name in line: print(line) elif find_nid =="3": find_pm = input('请输入学生排名:') for line in line_info: if find_pm in line: print(line) pass 我需要用python写代码,实现通过学生学号学生姓名学生排名三种方式进行查询文档中的信息
好的,根据你的要求,我为你编写了如下代码,可以实现通过学生学号、学生姓名、学生排名三种方式进行查询文档中的信息:
```python
def find_info():
findfile_info = open("C:\\Users\\ASUS\\Desktop\\student.txt", "r", encoding="UTF-8") # 以可读方式打开文件
line_info = findfile_info.readlines()
find_nid = int(input("请输入您的选择(1-3): "))
if find_nid == 1:
find_id = input("请输入学生学号:")
for line in line_info:
if find_id in line:
print(line)
elif find_nid == 2:
find_name = input("请输入学生姓名:")
for line in line_info:
if find_name in line:
print(line)
elif find_nid == 3:
find_pm = input("请输入学生排名:")
for line in line_info:
if find_pm in line:
print(line)
if __name__ == '__main__':
print("{:*^20}".format("进入模块5.根据条件查询"))
print("1.按学号查询")
print("2.按姓名查询")
print("3.按名次查询")
find_info()
```
你可以将代码保存为一个.py文件并运行它,然后根据提示输入相应的查询条件即可查询到对应的信息。
阅读全文