Skip to main content

DRF tokit.

Project description

Usage Examples

view

# Example usage in a DRF ViewSet:
class UserViewSet(OrmOnlyViewMixin, ModelViewSet):
    queryset = User.objects.all()
    serializer_class = UserSerializer

    def get_queryset(self):
        qs = super().get_queryset()
        return self.hook_orm_fields(qs)

orm service

import json
import logging
from common.init.init_django import initialize_django

initialize_django()
from drftokit import OrmOnlyServiceMixin
from apps.user.srv import UserSrv
from apps.user.serializers import UserSerializer


logger = logging.getLogger('debug')


def main():
    # 在 ORM 查询中使用 only,并取出第一个对象用于序列化
    qs = UserSrv.queryset.filter(pk__lt=10)
    qs_o = OrmOnlyServiceMixin.only(serializer_class=UserSerializer, qs=qs)
    logger.info(f"qs_o_query: {qs_o.query}")
    """
    qs_o_query: 
    SELECT 
        `user`.`id`, `user`.`username`, `user`.`nickname`, `user`.`avatar` 
    FROM `user` 
    WHERE (`user`.`deleted` = False AND `user`.`id` < 10) ORDER BY `user`.`id` DESC 
    """

    # s_a = OrmOnlySrv(s=UserSerializer, qs=qs)
    # logger.info(f"data {s_a.data_list}")
    #
    # s_o = OrmOnlySrv(s=UserSerializer, qs=qs)
    # logger.info(f"data {s_o.data}")
    return


if __name__ == '__main__':
    main()

drf list serializer

  • orm_only_fields
class TplListSerializer(UpdateInfoSerializer, CreatorInfoSerializer, TplSerializer):
    """
    列表: 简化字段,避免复杂逻辑
    """
    class Meta:
        model = Tpl
        orm_only_fields = True
        fields = [
            "id",
            "name",
        ]
from drftokit import OrmOnlyViewMixin

clsass Viewxxx(OrmOnlyViewMixin):
    def get_queryset(self):
        queryset = self._get_queryset()
        queryset = self.hook_orm_fields(qs=queryset)
        return queryset

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

drftokit-0.1.6.tar.gz (3.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

drftokit-0.1.6-py3-none-any.whl (3.7 kB view details)

Uploaded Python 3

File details

Details for the file drftokit-0.1.6.tar.gz.

File metadata

  • Download URL: drftokit-0.1.6.tar.gz
  • Upload date:
  • Size: 3.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.8

File hashes

Hashes for drftokit-0.1.6.tar.gz
Algorithm Hash digest
SHA256 cee0f38b7195cea2f83263fb88a900ea6763b52e534502a7f32c1b9c0941a61d
MD5 e56da7d08487e074e383a52411e99db3
BLAKE2b-256 b4681bd10d03ea6b7aadd08d3547986750b3a9cdbbaaee5328cf393aea7d2ce8

See more details on using hashes here.

File details

Details for the file drftokit-0.1.6-py3-none-any.whl.

File metadata

  • Download URL: drftokit-0.1.6-py3-none-any.whl
  • Upload date:
  • Size: 3.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.8

File hashes

Hashes for drftokit-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 66709c6bba99e5787994fac37543106c90e53fafe142012f196a99b7aa409d58
MD5 2f09639810a2dbdc9163206bdb5aa703
BLAKE2b-256 07aa6b21c9e3ce14d12a85d772cbc06904716cee590897b9abe3dbd6559fbee1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page