我正在使用 drf-nested-routers 来嵌套我的资源,并且一切运行良好。但是,我想使用 pk 以外的东西来引用父对象。
我目前拥有的是:
api/movies/4/scenes - 从 pk=4 的电影中生成场景列表。
我想要的是:
api/movies/ghost-busters/scenes - 标识符是movie.title而不是movie.pk
有什么建议么?
谢谢
我正在使用 drf-nested-routers 来嵌套我的资源,并且一切运行良好。但是,我想使用 pk 以外的东西来引用父对象。
我目前拥有的是:
api/movies/4/scenes - 从 pk=4 的电影中生成场景列表。
我想要的是:
api/movies/ghost-busters/scenes - 标识符是movie.title而不是movie.pk
有什么建议么?
谢谢
您可以将 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
然后对于您在serializer
and 视图
中设置的 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'