想实现途中多条件查询,部分代码如下:
1,前端html
="float: right;">
2.Django数据库模型,其中使用了两个外键
```python
class SutInfo(models.Model):
"""样品信息"""
entrust_num = models.ForeignKey(verbose_name="合同编号", to="EntrustInfo", to_field="entrust_id",
on_delete=models.CASCADE)
deliver_choice = {
(1, "送样上门"),
(2, "快递"),
}
deliver = models.SmallIntegerField(verbose_name="收样方式", choices=deliver_choice, default=1)
type = models.ForeignKey(verbose_name="样品型号", to="ProductInfo", to_field="id",
on_delete=models.CASCADE)
sn = models.CharField(verbose_name="出厂编号", max_length=32)
manage_sn = models.CharField(verbose_name="管理编号", max_length=32)
sample_sn = models.CharField(verbose_name="样品编号", max_length=14)
receive_date = models.DateTimeField(verbose_name="收样日期")
apparent_choice = {
(1, '完好'),
(2, '锈蚀严重'),
(3, '破损'),
}
apparent = models.SmallIntegerField(verbose_name="外观状态", choices=apparent_choice, default=1)
3.视图函数如下:(但肯定是实现不了的,在网上查找了很多资料,对于业余爱好者属实有点难度)
```python
def sut_list(request):
data_dict = {}
entrust_order = request.GET.get('entrust_id', "")
type_order = request.GET.get('type', "")
sn_order = request.GET.get('sn', "")
if entrust_order:
data_dict["entrust_num__entrust_id__contains"] = entrust_order
if type_order:
data_dict["type__type_id__contains"] = type_order
if sn_order:
data_dict["sn__contains"] = sn_order
queryset = models.SutInfo.objects.filter(**data_dict)
page_object = Pagination(request, queryset)
form = SutModelForm()
context = {
'form': form,
"queryset": page_object.page_queryset, # 分完页的数据
"page_string": page_object.html(), # 生成页码
"search_data": data_dict
}
return render(request, 'sut_list.html', context)
实现查询条件后,还能将查询输入的条件保留,刷新不会消失。