python - 我们可以在序列化器字段中填写我不需要的字段吗?

标签 python django django-rest-framework

我有一个用户模型,其中有很多字段:

class User(models.Model):

    openstackcloud_id = models.CharField(max_length=32, null=True)  # 
    username = models.CharField(max_length=16)
    password = models.CharField(max_length=40)  # sha1加密
    real_name = models.CharField(max_length=12, null=True,blank=True)
    phone = models.CharField( max_length=11)  # 手机号码
    email = models.EmailField(blank=True, null=True )
    qq = models.CharField(max_length=10, null=True, blank=True)
    address = models.CharField(max_length=64, blank=True, null=True)  # 地址
    id_card = models.CharField(blank=True, null=True, max_length=18, validators=[RegexValidator(regex='^.{18}$', message='身份证长度必须为18', code='nomatch')])
    id_card_img_front = models.CharField(max_length=256, blank=True, null=True)
    id_card_img_back = models.CharField(max_length=256, blank=True, null=True)
    nickname = models.CharField(max_length=16, blank=True, null=True)
    profile = models.CharField(max_length=256, blank=True, null=True, default='我爱旗云')  # 个人简介
    usertype = models.ForeignKey(to='UserType', default=1, blank=True)  # 默认是:1.普通用户

    user_c_type = models.CharField(max_length=4, null=True)  # 用户类型(个人 or 企业)
    fixed_phone = models.CharField(max_length=16, null=True)  # 固定电话
    fax = models.CharField(max_length=16, null=True)  # 传真
    main_bussiness = models.CharField(max_length=16, null=True)  # 主营业务
    main_industry = models.CharField(max_length=16, null=True) # 所属行业
    company_name = models.CharField(max_length=32, null=True)  # 公司名称
    company_address = models.CharField(max_length=32, null=True)  # 公司地址
    province = models.CharField(max_length=32, null=True, default="--省--")  # 省市县
    town = models.CharField(max_length=32, null=True, default="--市--")  # 省市县
    country_level = models.CharField(max_length=32, null=True, default="--县--")  # 省市县

    ctime = models.DateTimeField(auto_now_add=True)
    uptime = models.DateTimeField(auto_now=True)   # 更新时间
    status = models.CharField(max_length=1, null=True, default=1) # 1.存活  2.禁用 3.注销

你看,用户模型中有很多字段。

但我正在使用休息框架,例如:

class UserSerializer(serializers.ModelSerializer):

    class Meta:
        model = User
        fields = ('username', 'password', .....)

我应该在 UserSerializer 字段中写入我需要的所有用户信息,显然这是一件很麻烦的事情。

那么,有没有办法填补我不需要的字段?如果可以的话,对我们来说就方便了。

最佳答案

是的,你可以。使用排除。使用 '__all__' 包含所有字段,并使用 exclude 删除不需要的字段。

例如,如果您想删除“ctime”和“uptime”但需要包含所有其他字段,则

class UserSerializer(serializers.ModelSerializer):

    class Meta:
        model = User
        fields = '__all__'
        exclude = ('ctime', 'uptime')

关于python - 我们可以在序列化器字段中填写我不需要的字段吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46887904/

相关文章:

python - Django REST Framework View 中使用的 "format"参数是什么?

django - 使用 Django REST Framework 作为 Django 的身份验证后端

python - 当我执行 Trades Record.objects.create(**traderecord_data) 时,会引发 TypeError

python - 如何检查输入图像是否与裁剪后的脸部照片匹配?

python - Linux - 显示一些命令的内存

python - 确定 sqlite3 数据库是否为只读

python - ColumnDataSource 中的 Bokeh 线图颜色

python - 如何设置应保存在数据库中的日期时间选择器的默认时间

python - 纯 JavaScript 站点的 TastyPie 身份验证

python - 测试数据库在 Django Channels Pytest 测试期间不保留数据