我可以根据模型字段的选择过滤查询集吗?
模型:
COLORS = (
('BLACK', 'black'),
('RED', 'red'),
('BLUE', 'blue'),
//etc..
)
class Thing(Models.model):
color = models.CharField(max_length=5, choices=COLORS)
视图:
def filter_by_color(request):
q = Thing.objects.filter(???)
有没有办法根据不同的颜色选择过滤Thing
?另外,有没有办法动态编写它,以便所有颜色选择都可以响应单个视图?
答案 0 :(得分:3)
您应该查看Q个对象。这可以帮助您构建复杂的OR查询,具体取决于用户选择过滤的颜色。
更新添加示例。
假设您要过滤多种颜色:
from django.db.models import Q
def filter_by_color(request):
q = Thing.objects.filter(Q(color="BLACK") | Q(color="RED))
更新2 如果用户选中带复选框或类似颜色的颜色,您可以使用此方法:
def filter_by_color(request):
selected_colors = request.GET.getlist('colors')
q = Thing.objects.filter(color__in=selected_colors)
答案 1 :(得分:1)
你想要这个吗?
视图
def filter_by_color(request, color):
q = Thing.objects.filter(color=color)
因此,当您访问http://yoursite/thisview/black
时,您将获得黑色Thing
,当您访问http://yoursite/thisview/red
时,您将获得红色的Thing
。