gpt4 book ai didi

python - django rest 框架抽象类序列化器

转载 作者:太空狗 更新时间:2023-10-29 18:18:37 24 4
gpt4 key购买 nike

我有一些这样的模型:

class TypeBase(models.Model):
name = models.CharField(max_length=20)
class Meta:
abstract=True

class PersonType(TypeBase):
pass

class CompanyType(TypeBase):
pass

有了这个,我想创建一个序列化程序来保存所有这些字段类型(序列化、反序列化、更新和保存)。

更具体地说,我只需要一个序列化程序 (TypeBaseSerializer),它可以在 UI 上打印下拉列表、序列化 json 响应、在发布时反序列化它并将其保存到我所有的基础类型中。

像这样:

class TypeBaseSerializer(serializers.Serializer):
class Meta:
model = TypeBase
fields = ('id', 'name')

这可能吗?

最佳答案

我认为下面的方法更简洁。您可以将基本序列化程序的“抽象”字段设置为 true,并为所有子序列化程序添加通用逻辑。

class TypeBaseSerializer(serializers.ModelSerializer):
class Meta:
model = TypeBase
fields = ('id', 'name')
abstract = True

def func(...):
# ... some logic

然后创建子序列化器并使用它们进行数据操作。

class PersonTypeSerializer(TypeBaseSerializer):
class Meta:
model = PersonType
fields = ('id', 'name')


class CompanyTypeSerializer(TypeBaseSerializer):
class Meta:
model = CompanyType
fields = ('id', 'name')

现在您可以对每个模型正常使用这两个序列化程序。

但是如果你真的想要两个模型都有一个序列化器,那么也为他创建一个容器模型和一个序列化器。那更干净了:)

关于python - django rest 框架抽象类序列化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33137165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com