在不更改模型的情况下更改模型序列化器中的字段类型

马吉特雷克

我有一个带有字符串字段的模型,带有相应的模型序列化器。我想更改序列化器,以便它现在获取该字段的字符串列表,但在内部将其转换为字符串。

基本上, internal_repr = ','.join(input)

我尝试过更改validate函数中的数据类型,但是仍然收到验证错误,它不是字符串。这种变化应该在哪里发生?难道还需要重写该字段串行到ListSerializerchild=CharField指定的?

当前情况的基本表示:

模型:

class MyModel(models.Model):
    myfield = models.CharField(max_length=100)

    def save(self, *args, **kwargs):
        self.full_clean()
        return super(MyModel, self).save(*args, **kwargs)

序列化器:

MyModelSerializer(serializers.ModelSerializer):
     class Meta:
         model = MyModel
         fields = ('myfield')

我想让序列化器改为使用myfield的列表,然后通过','。join()将其转换为字符串

马吉特雷克

我能够添加myfield = serializers.ListField(child=serializers.CharField(), min_length=1)到序列化器中以更改序列化器类型,以及重写to_internal_value()to_representation()实现此方法。

现在的代码是:

模型:

class MyModel(models.Model):
    myfield = models.CharField(max_length=100)

    def save(self, *args, **kwargs):
        self.full_clean()
        return super(MyModel, self).save(*args, **kwargs)

序列化器:

MyModelSerializer(serializers.ModelSerializer):
   myfield = serializers.ListField(child=serializers.CharField(), min_length=1)

   def to_internal_value(self, data):
        myfield_val = data.get('myfield')
        output = super(MyModelSerializer, self).to_internal_value(data)
        output['myfield'] = ','.join(myfield_val)

   def to_representation(self, instance):
        myfield_val = instance.myfield.split(',')
        output = super(MyModelSerializer, self).to_representation(instance)
        output['myfield'] = myfield_val

   class Meta:
         model = MyModel
         fields = ('myfield')

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Spring,JSON序列化程序,仅在某些情况下对字段进行序列化

快速更改序列化器字段

如何在不检查MVC中的各个字段的情况下检查“模型对象”字段中的更改?

更改活动模型序列化器默认适配器

模型字段(在django中)和序列化器字段(在django rest框架中)之间的区别

如何在没有活动记录模型的情况下使用活动模型序列化器?

DRF序列化器可读-可写的非模型字段

Django Rest Framework:派生模型序列化器字段

在序列化器DRF中添加非模型字段

在序列化器中创建时更改返回类型

在不更改目标类型的情况下以最大精度序列化float

对于某些模型实例,DRF序列化器将字段更改为只读

无法在Django中更改模型字段类型

DRF:序列化器按模型字段分组

如何在模型X与模型Y有关系的情况下,从模型X中的模型X序列化外键?

在序列化器中创建具有多对多字段的模型的问题

如何在不更改表中值的情况下基于应用于字段的函数从模型中获取列表

Django REST框架:在序列化器中获取相关模型的字段

如何在不更改模型的情况下将Tableview划分为多个部分

如何在不破坏现有设置的情况下更改akka-scala响应模型

无法更改模型序列化器中的验证字段错误消息

如何在不创建特定域模型的情况下忽略命名查询中的字段

更改Django Rest Framework中序列化对象的结构(模型内容外部的拉ID字段)

ActiveModel序列化程序更改关联模型参数的输出

如何在不更改原始模型的情况下向嵌入式文档添加其他字段

Django:如何在不呈现反斜杠的情况下序列化模型的文本字段

在不创建反序列化类的情况下访问 json 中的某个变量

是否可以在不更改模型的情况下触发离子选择更改?

Django - 我可以在不连接模型的情况下创建序列化程序吗?