【问题标题】:django views - accessing a m2m field in a generic viewdjango 视图 - 在通用视图中访问 m2m 字段
【发布时间】:2011-06-28 09:51:08
【问题描述】:

我偶然发现了这个问题,我的菜鸟脑子想解决这个问题。我觉得这里缺少一些基本概念。

所以我有这个带有类别选择字段的“电影”模型和与“导演”模型的 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 字段的查询集中使用的过滤器,但我不知道该怎么做,我已经尝试了我能想到的任何东西,它给了我一个“关键字不能是一个表达式”错误

对这个卑微的菜鸟的任何帮助将不胜感激。

【问题讨论】:

    标签: django views generics m2m


    【解决方案1】:

    线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

    【讨论】:

      【解决方案2】:

      在您的过滤器中,尝试指定导演姓名,例如 (documentation):

      filter(director__name=director)

      【讨论】:

        猜你喜欢
        • 2022-01-23
        • 2011-04-06
        • 1970-01-01
        • 1970-01-01
        • 2010-12-11
        • 2020-11-09
        • 2021-06-28
        • 2011-03-04
        • 2014-12-05
        相关资源
        最近更新 更多