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 10:49:18 浏览: 21
可能是因为员工对应的 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() 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`表单。
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文件并运行它,然后根据提示输入相应的查询条件即可查询到对应的信息。