Привет Я новичок в Django и Django-Rest-Framework. Я прошел через учебники. То, что я пытаюсь сделать (как упражнение для обучения), возвращает объект, основанный на поле, отличном от первичного ключа.Получить объект по полю, отличному от первичного ключа
myserver:8000/videos
возвращает список всех видеороликов.myserver:8000/videos/1
возвращает видео с первичным ключом 1
То, что я хотел бы сделать, это:
myserver:8000/videos/:videoname
возвращает видео, гдеvideoname = videoname
У меня есть следующее Видео модель :
class Videos (models.Model):
videoID = models.IntegerField(blank=True, null=True)
videoName = models.CharField(max_length=20)
class Meta:
app_label="quickstart"
Мой маршрутизатор настроен как:
video_detail = views.VideoDetailView.as_view({
'get':'list'
})
urlpatterns = patterns('',
url(r'^', include(router.urls)),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
url(r'^videos/(?P<videoName>[^/]+)/$', video_detail)
)
И на мой взгляд, определяется как:
class VideoDetailView(viewsets.ModelViewSet):
serializer_class = VideosSerializer
def get_queryset(self):
videoName = self.kwargs.get(videoName, None)
queryset = super (VideoDetailView,self).get_queryset()
if videoName:
queryset = queryset.filter(videoName=videoName)
return queryset
АНИ бежит, но когда я попал: myserver:8000/videos/SecondVideo/
(где «SecondVideo» это название видео) Я получаю ошибку 404.
Любая помощь?
Я пошел вперед и добавил lookup_field и я все еще получаю 404. Любые другие идеи ? Или причины, почему это не будет работать? – rackhamup
Это работало для меня, как только я получил URL-адрес. Для людей, новых для Django, вот URL, который вы хотите использовать для поиска видео, где videoName = 'SecondVideo': http: // localhost: 8000/videos/SecondVideo /? Format = json – Luke