在 Django 模型过滤中用变量替换关键字参数
Replace Keyword Argument With Variable in Django Model Filtering
我正在根据用户在输入表单中提供的数据对 django 模型执行过滤。我不想对值进行硬编码,因此我希望遍历 request.POST
中的整个查询参数,然后按键和值进行过滤。
这是我的代码示例
class QueryView(View):
def post(self, request, *args, **kwargs):
params = request.POST
if params:
for key in params:
queryset = MyModel.objects.filter(key=params[key])
return MyResponse
我无法让事情正常工作,因为 key
必须是 MyModel
中的一个字段,有没有更好的方法来实现同样的目标。
您可以将它们作为字典传递:
queryset = MyModel.objects.filter(**{field_name: v1, another_field_name: v2})
您可以访问 POST 字段和值,因为 request.POST.items()
它会 return 一个键值对,因此您可以做一些事情像这样
class QueryView(View):
def post(self, request, *args, **kwargs):
params = request.POST
if params:
for key, value in params.items():
# key is the field and value is it's value
# now you can filter as you wish
queryset = MyModel.objects.filter(key=value)
return MyResponse
我正在根据用户在输入表单中提供的数据对 django 模型执行过滤。我不想对值进行硬编码,因此我希望遍历 request.POST
中的整个查询参数,然后按键和值进行过滤。
这是我的代码示例
class QueryView(View):
def post(self, request, *args, **kwargs):
params = request.POST
if params:
for key in params:
queryset = MyModel.objects.filter(key=params[key])
return MyResponse
我无法让事情正常工作,因为 key
必须是 MyModel
中的一个字段,有没有更好的方法来实现同样的目标。
您可以将它们作为字典传递:
queryset = MyModel.objects.filter(**{field_name: v1, another_field_name: v2})
您可以访问 POST 字段和值,因为 request.POST.items()
它会 return 一个键值对,因此您可以做一些事情像这样
class QueryView(View):
def post(self, request, *args, **kwargs):
params = request.POST
if params:
for key, value in params.items():
# key is the field and value is it's value
# now you can filter as you wish
queryset = MyModel.objects.filter(key=value)
return MyResponse