📦jst-django-core
django-modeltranslation + drf serialzierni qulay ishlatish uchun
from django_core.serializers import AbstractTranslatedSerializer
class PostSerializer(AbstractTranslatedSerializer):
class Meta:
model = Post
translated = 0 # 0 | 1 | 2 to'liq malumot pastda tushuntirilgan
translated_fields = ["title", "desc"]
fields = ["id", "title", "desc", "image"]// translated o'zgaruvchisi haqida malumot serializer Meta class ichida yaratiladi
// 0 - Accep-Language ga qarab avtomatik tarjimani olib beradi
{
"id": 1,
"image": "https://example.com/image.jpg",
"title": "name uz|en|ru", // auto
"desc": "desc uz|en|ru" // auto
}
// 1 - Barcha tildagi tarjimalarni qaytaradi: object
{
"id": 1,
"image": "https://example.com/image.jpg",
"title": {
"uz": "title uz",
"en": "title en",
"ru": "title ru",
},
"desc": {
"uz": "desc uz",
"en": "desc en",
"ru": "desc ru",
}
}
// 3 - Barcha tildagi tarjimalarni alohida fieldda qaytaradi
{
"id": 1,
"image": "https://example.com/image.jpg",
"title_uz": "name uz",
"name_en": "name en",
"name_ru": "name ru",
"desc_uz": "desc uz",
"desc_en": "desc en",
"desc_ru": "desc ru",
}CustomPagination
from django_core.paginations import CustomPagination
from .serializers import PostSerializer
from .models import Post
class PostViewSet(ModelViewSet):
pagination_class = CustomPagination
queryset = Post.objects.all()
serializer_class = PostSerializer// Qulay custom pagination
{
"links": {
"previous": "https://example.com?page=1",
"next": "https://example.com?page=3",
},
"total_items": 1000,
"total_pages": 100,
"page_size": 10,
"current_page": 2,
"results": [
{
"id": 1,
"image": "https://example.com/image.jpg",
"name": "name",
"desc": "desc"
}
// ... any
],
}
BaseViewSetMixin responslarni standartlashtirish uchun
from django_core.paginations import CustomPagination
from .serializers import PostSerializer
from .models import Post
from django_core.mixins import BaseViewSetMixin
class PostViewSet(BaseViewSetMixin, ModelViewSet):
pagination_class = CustomPagination
queryset = Post.objects.all()
serializer_class = PostSerializer// Qulay custom pagination va standartlashgan response
// viewsetda xatolik yuz bersa avtomatik status falsa qilinadi
// va detail yuboriladi
// success response
{
"status": true,
"data": {
"links": {
"previous": "https://example.com?page=1",
"next": "https://example.com?page=3",
},
"total_items": 1000,
"total_pages": 100,
"page_size": 10,
"current_page": 2,
"results": [
{
"id": 1,
"image": "https://example.com/image.jpg",
"name": "name",
"desc": "desc"
}
// ... any
],
}
}
// Error response
{
"status": false,
"detail": "Xatolik yuz berdi"
}
Last updated