2014-11-13 4 views
0

Я хочу разработать URL, как:Джанго restframework: фильтр URL с две модели поля

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

, а затем я могу перейти по ссылке, как:

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

Но title и area находятся в разных моделях с большим количеством взаимосвязей:

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' views.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) 

Пожалуйста, научи меня, как запрос с двумя моделями, спасибо очень много.

ответ

0

_set будет работать только для объектов, а не для фильтрованных запросов.

Попробуйте это:

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

Вот relevant documentation

+0

Спасибо. '' '' MovieTheater.objects.filter (city = area, movietheater__title = название) '' '' работает хорошо – user2492364

Смежные вопросы