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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值