2

我正在使用 drf-nested-routers 来嵌套我的资源,并且一切运行良好。但是,我想使用 pk 以外的东西来引用父对象。

我目前拥有的是:

api/movies/4/scenes - 从 pk=4 的电影中生成场景列表。

我想要的是:

api/movies/ghost-busters/scenes - 标识符是movie.title而不是movie.pk

有什么建议么?

谢谢

4

1 回答 1

2

您可以将 slug 用于您想要制作“api/movies/ghost-busters/scenes”的网址

首先,您必须使用 slugField 制作模型,例如。

class Blog(models.Model):
    qoute = models.CharField(max_length=30)
    slug = models.SlugField()

    def save(self, *args, **kwargs):
        self.slug = slugify(self.qoute)
        super(Blog, self).save(*args, **kwargs)

在保存模型期间,它将通过“qoute”创建一个 slug 并保存到“slug”列

urls.py输入_

url(r'^api/movies/(?P<slug>[\w-]+)/scenes/$', 'myapp.views.blog_detail', name='blog_detail'),

lookup_field然后对于您在serializerand 视图 中设置的 drf 。N.B: you can user ModelSerializer or Serializer or HyperlinkSerialzer as you wish..

class BlogSerializer(serializers.ModelSerializer):

    class Meta:
        model = Blog
        fields = ('quote', 'slug',)
        lookup_field = 'slug'

和意见..

class blog_detail(generics.RetrieveUpdateDestroyAPIView):

    queryset = Blog.objects.all()
    serializer_class = BlogSerializer
    lookup_field = 'slug'
于 2017-12-07T08:37:05.290 回答