Django之视图操作

本文详细介绍了在Django框架中使用ORM操作数据库的方法,包括原生方式与序列化器方式创建和更新记录。对比了两种方式的适用场景,帮助开发者选择最适合的实践方案。

模型:

class User(models.Model):
    name = models.CharField(max_length=10,unique=True, verbose_name="姓名")
    age = models.CharField(max_length=10, verbose_name="年龄")

    class Meta:
        db_table = 'User'
        verbose_name = '後臺用戶表'

视图: 

1、使用原生的方式。

class ApiViewSet(ModelViewSet):
    def create(self, request, *args, **kwargs):
        name=request.data['name']
        age=request.data['age']
        bool_obj = models.User.objects.get_or_create(name=name, age=age)
        if (bool_obj[1] == False):
            return Response({'code': 400, 'msg': '新增失败!'})
        try:
            return Response({'code': 200, 'msg': '新增成功!'})
        except:
            return Response({'code': 400, 'msg': '新增失败!'})

2、使用序列化器。

class ApiViewSet(ModelViewSet):
    def create(self, request, *args, **kwargs):
        ser = ApiMillSer(data=request.data)
        ser.is_valid(raise_exception=True)
        try:
            self.perform_create(ser)
            return Response({'code': 200, 'msg': '新增成功!'})
        except:
            return Response({'code': 400, 'msg': '新增失败!'})

注:当新增字段多的时候用第二种方式

更新tips:

class ApiViewSet(ModelViewSet):
    def update(self, request,pk, *args, **kwargs):
        instance = models.User.objects.filter(id=pk).first()
        if pk and instance:
            ser = UserSer(instance=instance, data=request.data)
            ser.is_valid(raise_exception=True)
            try:
                self.perform_update(ser)
                return Response({'code': 200, 'msg': '数据修改成功!'})
            except:
                return Response({'code': 400, 'msg': '数据修改失败!'})
        else:
            return Response({'code': 400, 'msg': '数据修改失败!'})

注:更新的话字段不多建议用第一种方式,因为有的时候我们不是所有的字段都可以更新的,都更新可以用第二种。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值