Skip to content

Commit a3890bb

Browse files
committed
Added get model fields
1 parent a51181e commit a3890bb

4 files changed

Lines changed: 18 additions & 12 deletions

File tree

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,9 @@ class MyModelAdmin(ModelAdmin):
200200
) -> StringIO | BytesIO | None:
201201
raise NotImplementedError
202202
203+
def get_model_fields(self) -> list[str]:
204+
raise NotImplementedError
205+
203206
def get_form_widget(self, field: str) -> tuple[WidgetType, dict]:
204207
raise NotImplementedError
205208

fastadmin/models/base.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,9 @@ async def get_export(
183183
) -> StringIO | BytesIO | None:
184184
raise NotImplementedError
185185

186+
def get_model_fields(self) -> list[str]:
187+
raise NotImplementedError
188+
186189
def get_form_widget(self, field: str) -> tuple[WidgetType, dict]:
187190
raise NotImplementedError
188191

fastadmin/models/orm/tortoise.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,6 @@
1111

1212

1313
class TortoiseModelAdmin(BaseModelAdmin):
14-
def _get_model_fields(self) -> list[str]:
15-
fields = [f for f in self.model_cls._meta.fields_db_projection.keys()]
16-
for m2m_field in self.model_cls._meta.m2m_fields:
17-
fields.append(m2m_field)
18-
return fields
19-
2014
async def save_model(self, obj: Any, payload: dict, add: bool = False) -> None:
2115
for key, value in payload.items():
2216
setattr(obj, key, value)
@@ -38,7 +32,7 @@ async def get_list(
3832
) -> tuple[list[Any], int]:
3933
qs = self.model_cls.all()
4034

41-
fields = self._get_model_fields()
35+
fields = self.get_model_fields()
4236

4337
if filters:
4438
for filter_condition, value in filters.items():
@@ -94,7 +88,7 @@ async def get_export(
9488
filters: dict | None = None,
9589
) -> StringIO | BytesIO | None:
9690
objs, _ = await self.get_list(offset=offset, limit=limit, search=search, sort_by=sort_by, filters=filters)
97-
fields = self._get_model_fields()
91+
fields = self.get_model_fields()
9892
hidden_fields = await self.get_hidden_fields()
9993
m2m_fields = self.model_cls._meta.m2m_fields
10094
fieldnames = [f for f in fields if f not in hidden_fields and f not in m2m_fields]
@@ -109,6 +103,12 @@ async def get_export(
109103
return output
110104
return None
111105

106+
def get_model_fields(self) -> list[str]:
107+
fields = [f for f in self.model_cls._meta.fields_db_projection.keys()]
108+
for m2m_field in self.model_cls._meta.m2m_fields:
109+
fields.append(m2m_field)
110+
return fields
111+
112112
def get_form_widget(self, field: str) -> tuple[WidgetType, dict]:
113113
field_obj = self.model_cls._meta.fields_map[field]
114114
field_obj = field_obj.reference if field_obj.reference else field_obj
@@ -188,7 +188,7 @@ def get_form_widget(self, field: str) -> tuple[WidgetType, dict]:
188188

189189
def get_fields(self) -> Sequence[str]:
190190
fields = super().get_fields()
191-
model_fields = self._get_model_fields()
191+
model_fields = self.get_model_fields()
192192
if not fields:
193193
if self.exclude:
194194
return [f for f in model_fields if f not in self.exclude]
@@ -198,15 +198,15 @@ def get_fields(self) -> Sequence[str]:
198198
def get_list_display(self) -> Sequence[str]:
199199
list_display = super().get_list_display()
200200
fields_map = self.model_cls._meta.fields_map
201-
model_fields = self._get_model_fields()
201+
model_fields = self.get_model_fields()
202202
if not list_display:
203203
return [f for f in model_fields if getattr(fields_map[f], "index", True)]
204204
return [f for f in list_display if f in model_fields]
205205

206206
def get_form_hidden_fields(self) -> Sequence[str]:
207207
fields_map = self.model_cls._meta.fields_map
208208
form_hidden_fields = super().get_form_hidden_fields()
209-
model_fields = self._get_model_fields()
209+
model_fields = self.get_model_fields()
210210
if not form_hidden_fields:
211211
return [
212212
f

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[tool.poetry]
22
name = "fastadmin"
3-
version = "0.1.5"
3+
version = "0.1.6"
44
description = ""
55
authors = ["Seva D <vsdudakov@gmail.com>"]
66
license = "MIT"

0 commit comments

Comments
 (0)