【发布时间】:2019-07-22 17:30:34
【问题描述】:
我正在尝试创建一个筛选器测试,其中用户仅与满足所有要求的programs 匹配。用户的输入是字典,例如:
user_dict = [{location: CA, gender: male, skill: crafts}]
programs 有requirements,如下图所示:
class Program(models.Model):
name = models.CharField()
requirements = models.ManyToManyField("Requirement")
class Requirement(models.Model):
name = models.CharField()
status = models.CharField()
我希望查询检索所有相关联的requirements 满足的所有programs。例如,如果一个名为 camp counselor 的 program 仅具有以下 2 个与之关联的要求:
[{'name': 'location', 'status': 'CA'}, {'name': 'skill', 'status': crafts}]
它将被检索,因为它的所有requirements 都与用户的字典匹配。它有第三个requirement:
[{'name': 'gender', 'status': 'female'}]
那么它将不会被检索。但是,如果第三个requirement 的status 是male,它将匹配并被检索。
目前,我正在遍历每个program 并检查是否有匹配项,但我觉得必须有更好的方法来执行此操作:
for p in program:
for r in p.requirements.all():
if user_dict[r.name] == r.status:
print "Match"
else:
print "No Match"
【问题讨论】:
-
你需要让所有程序都符合要求吗?
-
是的,我需要检索完全满足
requirements的所有程序 -
是字典列表吗?我的意思是
user_dict? -
不只是一个字典,具有通过筛选器获得的各种属性(即性别、技能、位置)
-
请检查我的回答,如果它为您提供了您将要做什么。如有任何问题,请留下您的评论。
标签: python django dictionary django-models django-q