Django 如何使用POST request和filter()进行字段查找并通过html页面返回数据集?
我想从用户那里获取属性'skill_required'和'desired_level'的值,根据这些值过滤数据库,并通过html页面'emptracker.html'发送匹配的数据行 问题是,我不知道如何通过html模板emptracker发送这些数据 查看页面的代码如下所示:Django 如何使用POST request和filter()进行字段查找并通过html页面返回数据集?,django,django-models,django-views,django-filter,Django,Django Models,Django Views,Django Filter,我想从用户那里获取属性'skill_required'和'desired_level'的值,根据这些值过滤数据库,并通过html页面'emptracker.html'发送匹配的数据行 问题是,我不知道如何通过html模板emptracker发送这些数据 查看页面的代码如下所示: def emptracker(request): if request.method == 'POST': skill_required = request.POST['skill_req
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超出范围,我就是不知道如何呈现这些数据
强调文本
这就是我要搜索的模型。发生这种情况的原因是,如果有人发出GET请求,则未定义
orgdata
。因此,如果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})
从app8.models导入empskillmapping
def清空接收器(请求):
如果request.method==“POST”:
所需技能=请求。发布['skill\u required']
期望的水平=请求。发布['期望的水平'
orgdata=empskillmapping.objects.filter(
所需技能=所需技能,
所需水平=所需水平
)
其他:
orgdata=empskillmapping.objects.none()
返回render(请求'emptracker.html',{'data':orgdata})
注意:Django中的模型是用PerlCase编写的,而不是用snake_大小写, 因此,您可能希望将模型从
empskillmapping
重命名为empskillmapping
注意:最好使用 而不是执行手动验证和数据清理。
表单
将不会
这不仅简化了在HTML中呈现表单,而且还使其更加方便
验证输入,并将数据清理为更方便的类型
这实际上是经过排序的,我使用下面的代码来获取这两个属性的值,并相应地过滤empskillmapping表 def清空接收器(请求): 我现在还有一个问题: 我想呈现具有特定技能的特定级别的员工的详细信息 为了实现这一点,我认为我必须在empskillmapping中使用外键通过“选择”来呈现另一个表中的数据,我该如何进行呢 “部门id”是员工和员工技能映射的外键 模型如下: 班级部门(模型.模型): 员工类别(models.Model): 类empskillmapping(models.Model):
您可以尝试
HttpResponse
而不是render
。发生这种情况的原因是,如果有人发出GET请求,则未定义orgdata
。感谢您的帮助!这实际上是排序的,我使用下面的代码获取两个属性的值,并相应地过滤empskillmapping表。
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})
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})
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)
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)