django的意见 - 在通用视图中访问一个m2m字段

django的意见 - 在通用视图中访问一个m2m字段

问题描述:

我已经偶然发现了这个问题,我的noob大脑炒了试图解决它。我觉得这里有一些基本概念,我错过了。django的意见 - 在通用视图中访问一个m2m字段

所以我有这个带类别选择字段的“电影”模型和一个与“导演”模型的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字段的queryset中使用的过滤器,但我不知道如何真正做到这一点,我尝试了任何我能想到的,它给了我一个“关键字可以” t是一个表达式“错误

任何帮助这个低级noob将不胜感激。

线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

+0

甜美!非常感谢 – takosuke 2011-02-16 15:03:17

在你的过滤器,可以尝试使用类似(documentation)导演的名字:

filter(director__name=director)

+0

谢谢!那么做了 – takosuke 2011-02-16 15:02:48