Serializers 序列化 新增一个字段(处理后赋值) 扔给前端 (实现表和表解偶) 含对modele层对应字段添加属性写法

#模型层
class tbl_project_category(models.Model):
    depart_id = models.IntegerField(verbose_name='部门id', default=0)
    pro_name = models.CharField(max_length=50, verbose_name='项目名')
    create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
    update_time = models.DateTimeField(auto_now_add=True, verbose_name='更新时间')
    send_email = models.TextField(validators=[int_list_validator], default=[], verbose_name='关联用户ID')
    is_deleted = models.BooleanField(default=False)
    
#序列化
class SendEmailSerializers(serializers.ModelSerializer):

    class Meta:

        model = tbl_project_category
        fields = ('id', 'pro_name', 'send_email', 'list_email')  #list_email 是新增加的字段
        extra_kwargs = {
            'id': {
                'read_only': True,
            },
            'pro_name': {
                'read_only': True,
            },
        }

    # send_email = serializers.SerializerMethodField()
    list_email = serializers.SerializerMethodField()

    def get_list_email(self, obj):
        objs = eval(obj.send_email)
        email_name = tbl_user.objects.filter(id__in=objs).all()  #查询其他表操作后赋值
        res = []
        for item in email_name:
            res.append(item.email)
        return res

 

 

通过自定义校验也可以达到了类似的效果。 ---这个只有校验的时候才有用,输出的得用本文章的方法

https://www.cnblogs.com/kaibindirver/p/16770753.html

 

posted @ 2023-02-23 14:04  凯宾斯基  阅读(128)  评论(0编辑  收藏  举报