如何在tastypie中获得自定义嵌套RESTful url?

时间:2016-05-26 10:59:24

标签: python django tastypie

我正在使用django-tastypie,我有这样的音乐列表资源:

/api/v1/musics

返回可用音乐列表,每个音乐对象都有一个名为votes的属性(它是一个IntegerField),我希望有一个端点,如:

/api/v1/musics/69/vote

用户可以发送这样的POST请求:

{
'vote':'+1'
}

我怎样才能做到这一点?
我的django模型:

class Music(models.Model):
    title = models.CharField(_("Music Title"), max_length=255, null=True)
    album = models.ForeignKey(Album, verbose_name=_("Album"), null=True)
    artist = models.ForeignKey(Artist, verbose_name=_("Artist"), null=True)
    genre = models.ForeignKey(Genre, verbose_name=_("Genre"), null=True)
    language = models.ForeignKey(Language, verbose_name=_("Language"), null=True)
    file = models.FilePathField(_("Track File Path"), max_length=1000)
    length = models.IntegerField(verbose_name=_("Music length in seconds"), null=True)
    is_playing = models.BooleanField(default=False)
    current_playlist = models.BooleanField(default=False)
    vote = models.IntegerField(default=0)

    def __str__(self):
        return "%s [Music Object]" % self.title

我的音乐资源定义:

class TrackResource(ModelResource):
    class Meta:
        queryset = musics_models.Track.objects.all()
        list_allowed_methods = ['get']
        detail_allowed_methods = ['get']
        resource_name = 'tracks'
        # authorization = DjangoAuthorization()
        filtering = {
            'title': ALL,
            'is_playing': ['exact'],
            'current_playlist': ['exact']
        }

        pass

0 个答案:

没有答案