DRF(Django Rest Framework)备忘

ProjectType.objects.values('code').distinct() ProjectType表中code字段所有的值(不包含重复的值)

三层嵌套serializers时。有可能报错“没有这个属性”,可以添加source='issue_set'这种方式。

class MyProjectSerializer(serializers.ModelSerializer):
    """
    项目表:我的借款
    """
    issue = IssueSerializer(source='issue_set', many=True)

反向取值

class Member(AbstractUser):
name = models.CharField(max_length=30, null=True, blank=True, verbose_name=u'用户名', unique=True)
password = models.CharField(max_length=100, null=False, verbose_name=u'密码')
class MemberIDCard(models.Model):
member = models.OneToOneField(Member, verbose_name=u"会员", null=True, related_name="id_card")
id_no = models.CharField(max_length=30, verbose_name=u'身份证号')

SerializerMethodField 的一种方式
is_recently = serializers.SerializerMethodField(method_name="method_is_recently")
def method_is_recently(self, obj):
pass

class MemberOfLoginSerializer(serializers.ModelSerializer):
"""
登录后返回的member信息
"""
id_no = serializers.ReadOnlyField(source='id_card.id_no')
class Meta:
model = Member
fields = ('id', 'real_name', 'mobile', 'id_no')

class UserViewSet(mixins.RetrieveModelMixin, viewsets.GenericViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer

def get_object(self):
    return self.request.user

@api_view(['GET'])
def current_user(request):
serializer = UserSerializer(request.user)
return Response(serializer.data)

class CurrentUserView(APIView):
def get(self, request):
serializer = UserSerializer(request.user)
return Response(serializer.data).

@api_view(['GET'])
def current_user(request):
user = request.user
return Response({
'username': user.username,
'email': user.email,
...
})

class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer

def get_object(self):
    pk = self.kwargs.get('pk')

    if pk == "current":
        return self.request.user

    return super(UserViewSet, self).get_object()

class UserViewSet(mixins.RetrieveModelMixin, viewsets.GenericViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer

def get_object(self):
    return self.request.user
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言 本文标题为实战,那么希望你已经搭建好了环境。如果没有,请参考官方文档进行环境搭建: 官方教程 通过学习这个例...
    CSU_IceLee阅读 10,599评论 6 12
  • Django: csrf防御机制 csrf攻击过程 1.用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登...
    lijun_m阅读 4,758评论 0 0
  • 目录 [TOC] 判断字段值是否包含某个数字,如果是字符,建议用icontains 管理员身份运行cmd配置虚拟环...
    又大又甜的桂圆阅读 3,161评论 0 0
  • 原文:https://my.oschina.net/liuyuantao/blog/751438 查询集API 参...
    阳光小镇少爷阅读 9,293评论 0 8
  • 此段内容简要来自自强学堂的教程详情请查询自强学堂 一、 后台的运作流程 接收request请求 处理数据 获取请求...
    coder_ben阅读 10,641评论 6 56

友情链接更多精彩内容