MCPcopy
hub / github.com/fastapi-admin/fastapi-admin / _get_display_input_field

Method _get_display_input_field

fastapi_admin/resources.py:201–249  ·  view source on GitHub ↗
(cls, field_name: str)

Source from the content-addressed store, hash-verified

199
200 @classmethod
201 def _get_display_input_field(cls, field_name: str) -> Field:
202 fields_map = cls.model._meta.fields_map
203 field = fields_map.get(field_name)
204 if not field:
205 raise NoSuchFieldFound(f"Can't found field '{field_name}' in model {cls.model}")
206 label = field_name
207 null = field.null
208 placeholder = field.description or ""
209 display, input_ = displays.Display(), inputs.Input(
210 placeholder=placeholder, null=null, default=field.default
211 )
212 if field.pk or field.generated:
213 display, input_ = displays.Display(), inputs.DisplayOnly()
214 elif isinstance(field, BooleanField):
215 display, input_ = displays.Boolean(), inputs.Switch(null=null, default=field.default)
216 elif isinstance(field, DatetimeField):
217 if field.auto_now or field.auto_now_add:
218 input_ = inputs.DisplayOnly()
219 else:
220 input_ = inputs.DateTime(null=null, default=field.default)
221 display, input_ = displays.DatetimeDisplay(), input_
222 elif isinstance(field, DateField):
223 display, input_ = displays.DateDisplay(), inputs.Date(null=null, default=field.default)
224 elif isinstance(field, IntEnumFieldInstance):
225 display, input_ = displays.Display(), inputs.Enum(
226 field.enum_type, null=null, default=field.default
227 )
228 elif isinstance(field, CharEnumFieldInstance):
229 display, input_ = displays.Display(), inputs.Enum(
230 field.enum_type, enum_type=str, null=null, default=field.default
231 )
232 elif isinstance(field, JSONField):
233 display, input_ = displays.Json(), inputs.Json(null=null)
234 elif isinstance(field, TextField):
235 display, input_ = displays.Display(), inputs.TextArea(
236 placeholder=placeholder, null=null, default=field.default
237 )
238 elif isinstance(field, IntField):
239 display, input_ = displays.Display(), inputs.Number(
240 placeholder=placeholder, null=null, default=field.default
241 )
242 elif isinstance(field, ForeignKeyFieldInstance):
243 display, input_ = displays.Display(), inputs.ForeignKey(
244 field.related_model, null=null, default=field.default
245 )
246 field_name = field.source_field
247 elif isinstance(field, ManyToManyFieldInstance):
248 display, input_ = displays.InputOnly(), inputs.ManyToMany(field.related_model)
249 return Field(name=field_name, label=label.title(), display=display, input_=input_)
250
251 @classmethod
252 def get_fields(cls, is_display: bool = True):

Callers 1

get_fieldsMethod · 0.80

Calls 2

NoSuchFieldFoundClass · 0.90
FieldClass · 0.85

Tested by

no test coverage detected