ModelSerializer 使用知识点

mac2022-06-30  26

1、有两个模型如下

A、project

class Project(models.Model): """ 项目表 """ id = models.AutoField(primary_key=True) name = models.CharField(max_length=50, verbose_name='项目名称') version = models.CharField(max_length=50, verbose_name='版本') type = models.CharField(max_length=50, verbose_name='类型', choices=ProjectType) description = models.CharField(max_length=1024, blank=True, null=True, verbose_name='描述') status = models.BooleanField(default=True, verbose_name='状态') LastUpdateTime = models.DateTimeField(auto_now=True, verbose_name='最近修改时间') createTime = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, max_length=1024, verbose_name='创建人') def __unicode__(self): return self.name def __str__(self): return self.name class Meta: verbose_name = '项目' verbose_name_plural = '项目'B、host (以project的id为外键) class GlobalHost(models.Model): """ host域名 """ id = models.AutoField(primary_key=True) project = models.ForeignKey(Project, on_delete=models.CASCADE, verbose_name='项目') name = models.CharField(max_length=50, verbose_name='名称') host = models.CharField(max_length=1024, verbose_name='Host地址') description = models.CharField(max_length=1024, blank=True, null=True, verbose_name='描述') status = models.BooleanField(default=True, verbose_name='状态') def get_relatedb(self): return HostRelateDB.objects.filter(user__post=self) def __unicode__(self): return self.name def __str__(self): return self.name class Meta: verbose_name = 'HOST' verbose_name_plural = 'HOST管理' 2、通过ModelSerializer新增host配置,序列化如下:A、GlobalHostSerializer class GlobalHostSerializer(serializers.ModelSerializer): """ host信息关联序列化 """ class Meta: model = GlobalHost fields = ('id', 'project_id', 'name', 'host', 'status', 'description')3、view中新增逻辑 print("add host data:", data) # data格式如下:{'project_id': 1, 'name': '1111', 'host': '111', 'description': '111'} obj = Project.objects.get(id=data["project_id"]) serializer = GlobalHostSerializer(data=data)with transaction.atomic(): if serializer.is_valid(): # 外键project_id serializer.save(project=obj) #外键一定要作为实例传入save函数,否则无法新增成功  

转载于:https://www.cnblogs.com/yoyo008/p/11585882.html

最新回复(0)