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=('name', 'relation', 'address', 'tel'))(instance=staff_info) return render(request, "staff_detail.html", {"StaffForm": StaffForm, "EmergencyFormSet": EmergencyFormSet}) THML中是 <table class="table table-striped"> <thead> <tr> <th>紧急联系人</th> </tr> </thead> <tbody> {% for obj in EmergencyFormSet %} {% for field in obj %} {% if field.label != "res_id" %} <tr> <td width="200" style="text-align: right">{{ field.label }}</td> <td style="width: 1000px">{{ field }}</td> </tr> {% endif %} {% endfor %} {% endfor %} </tbody> </table>,为什么会输出几行空的紧急联系人
时间: 2024-03-14 21:49:09 浏览: 52
根据给出的代码,可能是因为在循环遍历 EmergencyFormSet 中的每个对象时,如果该对象中的某些字段的 label 值为 "res_id",则会跳过该字段,不输出对应的表格行。如果 Emergency 模型中存在名为 "res_id" 的字段,但其 label 值为其他值或为空,则会导致输出几行空的紧急联系人。建议检查 Emergency 模型中字段的 label 值是否都正确设置。
相关问题
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会有几个空值
可能是因为员工对应的 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 对象。
阅读全文