小编laa*_*laa的帖子

Django Rest-Framework嵌套序列化器命令

有没有办法订购嵌套的序列化程序_set,例如order by pk或time-stamp.

所以基本上song_set在下面的json数据中显示的顺序是从最相邻的最新对象创建的,在本例中是order_by('-timestamp')或order_by('-pk').

Json数据

{
    "pk": 151,
    "album_name": "Name",
    "song_set": [
         {
           pk: 3,
           timestamp: '5 seconds'
         },
         {
           pk: 2,
           timestamp: '10 seconds'
         },
         {
           pk: 1,
           timestamp: '15 seconds'
         }
    ]
}
Run Code Online (Sandbox Code Playgroud)

模型

class Album(models.Model):
    album_name     = models.CharField(max_length=100, blank=True)


class Song(models.Model):
    album          = models.ForeignKey('album.Album', default=1)
    timestamp      = models.DateTimeField(auto_now_add=True, auto_now=False)
Run Code Online (Sandbox Code Playgroud)

Searilizer

class SongListSerializer(HyperlinkedModelSerializer):
    class Meta:
        model = Song
        fields = [
            'pk',
            'timestamp'
        ]

class AlbumSerializer(HyperlinkedModelSerializer):
    song_set …
Run Code Online (Sandbox Code Playgroud)

python django rest json django-rest-framework

15
推荐指数
4
解决办法
5781
查看次数

Django-rest-framework 多个 url 参数

我如何将“示例对象”映射到 url: website.com/api/<user>/<slug>。

我收到这个
invalid literal for int() with base 10: 'username'错误。所以我知道我需要使用用户 ID 才能映射到对象,这是因为如果我使用 user_id(整数)(url:)website.com/api/<user_id>/<slug>而不是用户/用户名,我就可以映射到对象(细绳)。

当映射到对象从 user_id(整数)到另一个字段(如用户(字符串))时,有没有办法覆盖默认值?

我也不明白为什么def get_object在(Api 视图)中传递用户而不是 user_id不能解决这个问题。

网址

urlpatterns = [
    url(r'^api/(?P<user>\w+)/(?P<slug>[\w-]+)/$', ExampleDetailAPIView.as_view(), name='example'),
]
Run Code Online (Sandbox Code Playgroud)

接口视图

class ExampleDetailAPIView(RetrieveAPIView):
    queryset = Example.objects.all()
    serializer_class = ExampleDetailSerializer

    def get_object(self):
        user = self.kwargs.get('user')
        slug = self.kwargs.get('slug')
        return Example.objects.get(user=user, slug=slug)

    def get_serilizer_context(self, *args, **kwargs):
        return {'request': self.request}
Run Code Online (Sandbox Code Playgroud)

序列化器

class ExampleDetailSerializer(HyperlinkedModelSerializer):
    url = serializers.SerializerMethodField()

    class Meta:
        model = Example
        fields = [
            'url',
        ]

    def get_url(self, …
Run Code Online (Sandbox Code Playgroud)

python django rest django-rest-framework

1
推荐指数
1
解决办法
5780
查看次数

标签 统计

django ×2

django-rest-framework ×2

python ×2

rest ×2

json ×1