来自字符串的 Django 查询集关键字
Django queryset keyword from string
这是我的模型
class Mymodel(models.Model):
title = models.CharField(max_length=150)
author = models.CharField(max_length=150)
我有一个像这样的 json 存储在数据库 q = {"field_name": "title", "value":"django"}
中,这就是我想要做的。
Mymodel.objects.filter(q["field_name"]=q["value"])
它不工作。获取错误
SyntaxError: keyword can't be an expression
我怎样才能让它工作?我尝试过
Mymodel.objects.filter(getattr(event_model, q["field_name"])=q["value"])
如果像下面这样的 elif 条件,可以使它像许多一样工作,但代码变得丑陋。有没有更简洁的方法来做到这一点?
if q["field_name"] == "title":
Mymodel.objects.filter(title=q["value"])
elif q["field_name"] == "author":
Mymodel.objects.filter(author=q["value"])
您可以使用字典解包技术,
q = {"field_name": "title", "value": "django"}
Mymodel.objects.filter(<b>**{q["field_name"]: q["value"]}</b>)
这是我的模型
class Mymodel(models.Model):
title = models.CharField(max_length=150)
author = models.CharField(max_length=150)
我有一个像这样的 json 存储在数据库 q = {"field_name": "title", "value":"django"}
中,这就是我想要做的。
Mymodel.objects.filter(q["field_name"]=q["value"])
它不工作。获取错误
SyntaxError: keyword can't be an expression
我怎样才能让它工作?我尝试过
Mymodel.objects.filter(getattr(event_model, q["field_name"])=q["value"])
如果像下面这样的 elif 条件,可以使它像许多一样工作,但代码变得丑陋。有没有更简洁的方法来做到这一点?
if q["field_name"] == "title":
Mymodel.objects.filter(title=q["value"])
elif q["field_name"] == "author":
Mymodel.objects.filter(author=q["value"])
您可以使用字典解包技术,
q = {"field_name": "title", "value": "django"}
Mymodel.objects.filter(<b>**{q["field_name"]: q["value"]}</b>)