django 多对多反序列添加


# 添加学生
class Addstu1(APIView):
def post(self,request):
data = request.data
data['img'] = '123456' # img直接写成了死的数据
print(data)
ss=Stuerializers1(data=data)
if ss.is_valid():
ss.save()
return Response({'code':200,'message':'添加成功'})
return Response({'code':10020,'message':'添加失败'})


最重要的序列化部分

# 多对多添加学生
class Stuerializers1(serializers.Serializer):
name = serializers.CharField(max_length=32)
img = serializers.CharField(max_length=255)
cid = serializers.ListField() # ListField 可以添加多个
def create(self,data):
cid = data.pop('cid') #cid并不是我stu里的字段 所以弹出cid
        ss = Stu.objects.create(**data)  #添加stu表
ss.duo.set(cid) #添加stu 外键 dou
return ss

模型
# 课程
class Kc(Base,models.Model):
name = models.CharField(max_length=32)
price = models.DecimalField(max_digits=9,decimal_places=2)
# sss_set =

class Meta:
db_table='kc'

# 学生表
class Stu(Base,models.Model):
name = models.CharField(max_length=32)
img = models.CharField(max_length=255)
#related_name='sss' 起个别名 当反向添加的时候他就相当于课程表里的外键了 sss_set
#可以直接代替 stu表里的dou
duo = models.ManyToManyField(to='Kc',related_name='sss')#
class Meta:
db_table='stu'

有错误请指出




猜你喜欢

转载自www.cnblogs.com/pp8080/p/11828629.html