具有动态字段 - 值对列表的Django模型过滤器

时间:2017-05-21 10:50:41

标签: django django-models django-forms

如果有办法传递一个值列表,这些值的大小会根据用户发送的值而变化。这是用户查询的基本要求。

例如,假设一个模型如下,它有3个字段。

class MyModel(models.Model)
   Fiedl1 //say an int field
   Field2 //int field
   Field3 //char field

在用户搜索表单中,所有字段都是可选字段,用户可以使用三种组合查询特定对象。

  1. 用户不要在表单中设置任何字段(默认情况下可以处理)
  2. 用户仅设置两个字段的值。
  3. 用户设置查询的所有值。 (类似于2)
  4. 我的理解是只传递POST请求中的可用字段就可以了。我怎样才能做到这一点?我为此寻找正确且编码较少的解决方案。

1 个答案:

答案 0 :(得分:0)

您可以使用Q对象Link

看起来像这样:

q_objects = Q() 
for field, value in data:
    q_objects |= Q(**{field: value})

queryset = MyModel.objects.filter(q_objects)