# coding: utf-8 # from rest_framework import serializers from django.utils.translation import ugettext_lazy as _ from orgs.mixins.serializers import BulkOrgResourceModelSerializer from common.serializers import AdaptedBulkListSerializer from .. import models class DBAttrsSerializer(serializers.Serializer): host = serializers.CharField(max_length=128, label=_('Host')) port = serializers.IntegerField(label=_('Port')) # 添加allow_null=True,兼容之前数据库中database字段为None的情况 database = serializers.CharField(max_length=128, required=True, allow_null=True, label=_('Database')) class MySQLAttrsSerializer(DBAttrsSerializer): port = serializers.IntegerField(default=3306, label=_('Port')) class PostgreAttrsSerializer(DBAttrsSerializer): port = serializers.IntegerField(default=5432, label=_('Port')) class OracleAttrsSerializer(DBAttrsSerializer): port = serializers.IntegerField(default=1521, label=_('Port')) class MariaDBAttrsSerializer(MySQLAttrsSerializer): pass class DatabaseAppSerializer(BulkOrgResourceModelSerializer): class Meta: model = models.DatabaseApp list_serializer_class = AdaptedBulkListSerializer fields = [ 'id', 'name', 'type', 'get_type_display', 'host', 'port', 'database', 'comment', 'created_by', 'date_created', 'date_updated', ] read_only_fields = [ 'created_by', 'date_created', 'date_updated' 'get_type_display', ] extra_kwargs = { 'get_type_display': {'label': _('Type for display')}, }