app_drf.views_v2 源代码

"""V2
"""
from typing import Any
from django.contrib.auth.models import User
from app_models.models import UserExtra, UserAsset
from app_models.models import Category, Product, UserOrder, Warehouse, Supplier

from rest_framework import serializers
from rest_framework import viewsets

# User serializer and ModelViewSet
[文档]class UserSerializer(serializers.HyperlinkedModelSerializer):
[文档] class Meta: model = User fields = ['url', 'username', 'first_name', 'last_name']
[文档]class UserViewSet(viewsets.ReadOnlyModelViewSet): queryset = User.objects.all().order_by('-date_joined') serializer_class = UserSerializer
# Product serializer and ModelViewSet
[文档]class ProductSerializer(serializers.ModelSerializer):
[文档] class Meta: model = Product fields = '__all__'
[文档]class ProductViewSet(viewsets.ModelViewSet): queryset = Product.objects.all() serializer_class = ProductSerializer
# Category
[文档]class CategorySerializer(serializers.ModelSerializer):
[文档] class Meta: model = Category fields = '__all__'
[文档]class CategoryViewSet(viewsets.ReadOnlyModelViewSet): queryset = Category.objects.all() serializer_class = CategorySerializer
# UserOrder
[文档]class UserOrderSerializer(serializers.ModelSerializer):
[文档] class Meta: model = UserOrder fields = '__all__'
[文档]class UserOrderViewSet(viewsets.ReadOnlyModelViewSet): queryset = UserOrder.objects.all() serializer_class = UserOrderSerializer
# Warehouse
[文档]class WarehouseSerializer(serializers.ModelSerializer):
[文档] class Meta: model = Warehouse fields = '__all__'
[文档]class WarehouseViewSet(viewsets.ReadOnlyModelViewSet): queryset = Warehouse.objects.all() serializer_class = WarehouseSerializer
# Supplier
[文档]class SupplierSerializer(serializers.ModelSerializer):
[文档] class Meta: model = Supplier fields = '__all__'
[文档]class SupplierViewSet(viewsets.ReadOnlyModelViewSet): queryset = Supplier.objects.all() serializer_class = SupplierSerializer
# UserExtra, UserAsset # 这两个one-to-one的信息,和User一起显示出来 from django.core.exceptions import ObjectDoesNotExist
[文档]class FulluserSerializer(serializers.ModelSerializer): """显示用户的完整信息 User & UserExtra & UserAsset Arguments: weixin_openid: UserExtra / weixin_openid phone: UserExtra / phone qq: UserExtra / qq balance: UserAsset / balance """ weixin_openid = serializers.SerializerMethodField('get_userextra_weixin_openid') phone = serializers.SerializerMethodField('get_userextra_phone') qq = serializers.SerializerMethodField('get_userextra_qq') balance = serializers.SerializerMethodField('get_userasset_balance')
[文档] def get_userextra_weixin_openid(self, instance): user = instance try: return user.userextra.weixin_openid except ObjectDoesNotExist as e: return '微信还没有登录过哦 😀'
[文档] def get_userextra_phone(self, instance): user = instance try: return user.userextra.phone except ObjectDoesNotExist as e: return '电话号码还没有填哦 😀'
[文档] def get_userextra_qq(self, instance): user = instance try: return user.userextra.qq except ObjectDoesNotExist as e: return 'qq号还没有填哦 😀'
[文档] def get_userasset_balance(self, instance): user = instance try: return user.userasset.balance except ObjectDoesNotExist as e: return '还没有用户资产,需要登录一次才会有哦 😀'
[文档] class Meta: model = User # fields = '__all__' exclude = ['password', ]
[文档]class FulluserViewSet(viewsets.ReadOnlyModelViewSet): queryset = User.objects.all().order_by('id') serializer_class = FulluserSerializer
# UserExtra, UserAsset