@@ -118,11 +118,8 @@ class BooleanControl(IntEnumControl):
118118 def options (self ) -> List [str ]:
119119 return ["True" , "False" ]
120120
121- async def validate (self , value : Any ) -> Any :
122- return self .amis_2_orm (value )
123-
124121 def amis_2_orm (self , value : Any ) -> Any :
125- if ( value == "None" or not value ) and self ._field .null : # type: ignore
122+ if not value and self ._field .null : # type: ignore
126123 return None
127124 if value == "True" :
128125 return True
@@ -132,7 +129,7 @@ def amis_2_orm(self, value: Any) -> Any:
132129
133130 def orm_2_amis (self , value : Any ) -> Any :
134131 if value is None :
135- return "None"
132+ return
136133 elif value :
137134 return "True"
138135 return "False"
@@ -157,18 +154,16 @@ def get_column_inline(self, request: Request) -> Column:
157154 self ._column_inline .quickEdit .format = "YYYY-MM-DD HH:mm:ss"
158155 return self ._column_inline
159156
160- def amis_2_orm (self , value : Any ) -> Any :
161- if value == "None" or not value : # type: ignore
162- if self ._field .null :
163- return None
164- else :
165- raise TmpValueError (f"{ self .label } 不能为 { value } " )
166- return datetime .datetime .strptime (value , "%Y-%m-%d %H:%M:%S" )
157+ def amis_2_orm (self , value : str ) -> Any :
158+ if value :
159+ return datetime .datetime .strptime (value , "%Y-%m-%d %H:%M:%S" )
160+ if self ._field .null : # type: ignore
161+ return None
162+ raise TmpValueError (f"{ self .label } 不能为 { value } " )
167163
168164 def orm_2_amis (self , value : datetime .datetime ) -> Any :
169- if value is None :
170- return None
171- return value .strftime ("%Y-%m-%d %H:%M:%S" )
165+ if value is not None :
166+ return value .strftime ("%Y-%m-%d %H:%M:%S" )
172167
173168
174169class DateControl (BaseAdminControl ):
@@ -187,13 +182,12 @@ def get_column_inline(self, request: Request) -> Column:
187182 return self ._column_inline
188183
189184 def amis_2_orm (self , value : Any ) -> Any :
190- if value == "None" or not value : # type: ignore
191- if self ._field .null :
192- return None
193- else :
194- raise TmpValueError (f"{ self .label } 不能为 { value } " )
195- year , month , day = value .split ("-" )
196- return datetime .date (int (year ), int (month ), int (day ))
185+ if value :
186+ year , month , day = value .split ("-" )
187+ return datetime .date (int (year ), int (month ), int (day ))
188+ if self ._field .null : # type: ignore
189+ return None
190+ raise TmpValueError (f"{ self .label } 不能为 { value } " )
197191
198192 def orm_2_amis (self , value : datetime .date ) -> Any :
199193 if value is None :
@@ -219,19 +213,18 @@ def get_column_inline(self, request: Request) -> Column:
219213 return self ._column_inline
220214
221215 def amis_2_orm (self , value : Any ) -> Any :
222- if not value :
216+ if value :
217+ return datetime .time .fromisoformat (value )
218+ if self ._field .null : # type: ignore
223219 return None
224- return datetime . time . fromisoformat ( value )
220+ raise TmpValueError ( f" { self . label } 不能为 { value } " )
225221
226222 def orm_2_amis (self , value : Optional [datetime .time ]) -> Any :
227- if value is None :
228- return None
229- if callable (value ):
230- return value ().strftime ("%H:%M:%S" )
231- return value .strftime ("%H:%M:%S" )
223+ if value is not None :
224+ return value .strftime ("%H:%M:%S" )
232225
233226
234- class JsonControl (TextControl ): # fixme 用代码编辑器重构?
227+ class JsonControl (TextControl ):
235228 def amis_2_orm (self , value : Any ) -> Any :
236229 if not value :
237230 return None
@@ -244,7 +237,10 @@ def get_formitem(self, request: Request, codenames: Iterable[str]) -> FormItem:
244237 if not self ._control :
245238 super ().get_formitem (request , codenames )
246239 self ._control .validations = "isJson"
247- self ._control .value = "{}" # fixme jsonfield不能为空
240+ if not callable (self ._field .default ): # type: ignore
241+ self ._control .required = True # jsonfield不能为空不然写数据库必爆炸
242+ if not self ._control .value : # 如果有默认值则已经在父类里面被调用
243+ self ._control .value = "{}"
248244 return self ._control
249245
250246 def get_column_inline (self , request : Request ) -> Column :
@@ -422,7 +418,7 @@ def amis_2_orm(self, value: List[dict]) -> Any:
422418 return value .split ("," )
423419 return [i ["value" ] for i in value ]
424420
425- async def validate (self , value : Any ) -> Any :
421+ async def validate (self , value : Any , is_create = False ) -> Any :
426422 if value is not None :
427423 pks = self .amis_2_orm (value )
428424 if len (pks ) > 0 :
0 commit comments