模型:
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': '数据修改失败!'})
注:更新的话字段不多建议用第一种方式,因为有的时候我们不是所有的字段都可以更新的,都更新可以用第二种。