11import json
22from functools import lru_cache , partial
3- from datetime import datetime , date
43from django .conf import settings
54from django .db .backends .base .operations import BaseDatabaseOperations
65from .compiler import InsertUnnest , GaussDBSQLCompiler , SQLInsertCompiler
1514from django .db .models .functions import Cast
1615from django .utils .regex_helper import _lazy_re_compile
1716from django .db .models import JSONField , IntegerField
17+ from django .db import models
1818
1919
2020@lru_cache
@@ -28,7 +28,6 @@ class DatabaseOperations(BaseDatabaseOperations):
2828 def __init__ (self , * args , ** kwargs ):
2929 super ().__init__ (* args , ** kwargs )
3030
31- # compiler_module = "gaussdb_django.compiler"
3231 cast_char_field_without_max_length = "varchar"
3332 explain_prefix = "EXPLAIN"
3433 explain_options = frozenset (
@@ -439,7 +438,6 @@ def converter(value, expression, connection):
439438
440439 return [converter ] + converters
441440 if isinstance (expression .output_field , IntegerField ):
442-
443441 def int_safe_converter (value , expression , connection ):
444442 if value is None :
445443 return None
@@ -451,5 +449,10 @@ def int_safe_converter(value, expression, connection):
451449 return None
452450
453451 return [int_safe_converter ] + converters
454-
452+ if isinstance (expression .output_field , (models .CharField , models .TextField )):
453+ def none_to_empty (value , expression , connection ):
454+ if value is None :
455+ return ""
456+ return value
457+ converters .append (none_to_empty )
455458 return converters
0 commit comments