【问题标题】:django restframework : url filter with two model fielddjango rest 框架:具有两个模型字段的 url 过滤器
【发布时间】:2014-11-13 11:27:44
【问题描述】:

我想设计一个像这样的网址:

url(r'^theaters/(?P<area>.+)/(?P<title>.+)/$', TheaterAreaList.as_view(), name='theater-area'),

然后我可以转到如下链接:

http://127.0.0.1:8000/theaters/north/moviename

titlearea 处于不同的模型中,具有多对多关系:

models.py

class Movie(models.Model):
    link = models.URLField()
    title = models.CharField(max_length=255, null=True)

class MovieTheater(models.Model):
    movietheater = models.ManyToManyField(Movie,null=True,blank=True,through="MovieShowtime")
    movie_theater = models.CharField(max_length=255, null=True)     
    city = models.CharField(max_length=255, null=True)     #east west north south

class MovieShowtime(models.Model):
    theater = models.ForeignKey( MovieTheater, null=True,blank=True,related_name = 'theater' )
    movie = models.ForeignKey( Movie, null=True,blank=True,related_name = 'movie' )
    time = models.TextField(null=True,blank=True)     

我的views.py 有错误QuerySet' object has no attribute 'movietheater_set' 视图.py:

class TheaterAreaList(generics.ListAPIView):
    serializer_class = TheaterSerializer

    def get_queryset(self):

        area = self.kwargs['city']
        title = self.kwargs['title']
        return MovieTheater.objects.filter(city=area).movietheater_set.filter(title=title)

请教我如何用两个模型查询,非常感谢。

【问题讨论】:

    标签: python django django-rest-framework


    【解决方案1】:

    _set 仅适用于对象,不适用于过滤的查询集。

    试试这个:

    MovieTheater.objects.filter(city=area, movietheater__movie__title=title)
    

    这里是relevant documentation

    【讨论】:

    • 谢谢。 MovieTheater.objects.filter(city=area, movietheater__title=title) 效果很好
    猜你喜欢
    • 2016-08-06
    • 1970-01-01
    • 2015-04-03
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 2014-02-17
    • 2013-01-22
    • 2023-03-18
    相关资源
    最近更新 更多