如何使用POST请求和filter()进行字段查找并通过html页面返回数据集



我想从用户那里获得属性"skill_required"one_answers"desired_level"的值,根据这些值过滤DB,并通过html页面"emptracker.html'"发送匹配的数据行

问题是,我不知道如何通过html模板emptracker发送这些数据。

查看页面的代码如下:

def emptracker(request):

if request.method == 'POST':
skill_required = request.POST['skill_required'],
desired_level = request.POST['desired_level']
from app8.models import empskillmapping
orgdata = empskillmapping.objects.filter(skill_required = skill_required).filter(desired_level = desired_level)
return render(request, 'emptracker.html',{'data': orgdata})

我在这里遇到一个错误,说orgdata超出了范围,我只是不知道如何呈现这些数据。

强调文本

class empskillmapping(models.Model):
skill_required = models.CharField(max_length=20)
desired_level = models.ForeignKey(level,on_delete=models.CASCADE,default="", editable= True)
department_id = models.ForeignKey(department,on_delete=models.CASCADE,default="", editable= True)

这是我想要搜索的模型。

发生这种情况的原因是,如果有人发出GET请求,则orgdata而不是定义的。因此,您应该在if request.method == 'POST'条件失败的情况下采取措施。例如,返回一个空查询集:

from app8.models import empskillmapping
def emptracker(request):   
if request.method == 'POST':
skill_required = request.POST['skill_required']
desired_level = request.POST['desired_level'
orgdata = empskillmapping.objects.filter(
skill_required=skill_required,
desired_level = desired_level
)
else:
orgdata =empskillmapping.objects.none()
return render(request, 'emptracker.html',{'data': orgdata})

注意:Django中的模型是用PerlCase编写的,而不是用snake_case,因此,您可能希望将模型从empskillmapping重命名为EmpSkillMapping


注意:最好使用Form[Django-doc]而不是对数据进行手动验证和清理。Form不会这不仅简化了在HTML中呈现表单,而且还使其更加方便以验证输入,并数据清理为更方便的类型。

这实际上是排序的,我使用下面的代码来获取这两个属性的值,并相应地过滤empskillmapping表。

def emptracker(请求(:

value = request.POST.get('skill_required')
value1 = request.POST.get('desired_level')
selection = empskillmapping.objects.filter(skill_required =value).filter(desired_level=value1)
return render(request, 'emptracker.html',{'data': selection})

我现在有另一个问题:我想向员工介绍在某一级别拥有特定技能的员工的详细信息。

为了实现这一点,我认为我必须在empskillmapping中使用外键通过"选择"来呈现另一个表中的数据,我该如何处理?

department_id是employee和empskillmapping的外键。

型号如下:

班级部门(型号.型号(:

department_id = models.IntegerField(primary_key=True,null=False)
dept_name = models.CharField(max_length=20)

班级员工(模特.模特(:

employee_id = models.CharField(max_length=255,primary_key=True,null=False)
username = models.CharField(max_length=20)
department_id = models.ForeignKey(department,on_delete=models.CASCADE,default="", editable= True)#foreign key to department
password = models.CharField(max_length= 30)

类empskillmapping(models.Model(:

skill_required = models.CharField(max_length=20)
desired_level = models.ForeignKey(level,on_delete=models.CASCADE,default="", editable= True)
department_id = models.ForeignKey(department,on_delete=models.CASCADE,default="", editable= True)

最新更新