我偶然发现了这个问题,我的小脑大脑被炸了试图解决它。我觉得这里有一些我缺少的基本概念。
所以我有这个带有类别选择字段的“电影”模型和与“导演”模型的m2m关系,我正在尝试编写2个不同的视图,一个返回按类别过滤的电影列表,一个返回由导演过滤的电影列表。 第一个很简单,但我不知道如何获取导演模型的名称字段来创建第二个过滤器。
所以我有这个模型(我已经把不相关的东西拿出来,包括我上面提到的类别)
class Director(models.Model):
name = models.CharField(max_length=50)
web = models.URLField(blank=True, help_text= "opcional")
class Film(models.Model):
name = models.CharField(max_length=50)
slug = models.SlugField(max_length= 15)
director = models.ManyToManyField(Director, blank=True, help_text= "opcional")
此网址
(r'^peliculas/director/(?P<director>\w+)/$', 'filtered_by_director'),
和这个观点
def filtered_by_director(request,director):
return list_detail.object_list(
request,
queryset = Film.objects.filter(director.name=director),
template_name ='sections/film_list.html',
template_object_name = 'film',
paginate_by = 3
)
两个视图都应该使用相同的模板来呈现相关的对象列表 该视图不喜欢我在m2m字段的查询集中使用的过滤器,但我不知道如何真正做到这一点,我已经尝试过任何我能想到的,它给了我一个“关键字不能是一个表达“错误
对这个低级菜鸟的任何帮助将不胜感激。
答案 0 :(得分:0)
在过滤器中,尝试指定导演名称,如(documentation):
filter(director__name=director)
答案 1 :(得分:0)
行queryset = Film.objects.filter(director.name=director),
需要阅读:queryset = Film.objects.filter(director__name=director),
字段查找由__
双下划线语法完成:
http://docs.djangoproject.com/en/dev/topics/db/queries/#field-lookups