(cls, field_name: str)
| 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): |
no test coverage detected