Skip to content

Commit

Permalink
Merge pull request #92 from photopills/render-fk-values-inside-resour…
Browse files Browse the repository at this point in the history
…ce-list

Render fk values inside resource list
  • Loading branch information
long2ice committed Jul 15, 2022
2 parents 0514185 + e3e391b commit 32b5cdb
Showing 1 changed file with 27 additions and 7 deletions.
34 changes: 27 additions & 7 deletions fastapi_admin/routes/resources.py
Expand Up @@ -28,19 +28,35 @@ async def list_view(
):
fields_label = model_resource.get_fields_label()
fields = model_resource.get_fields()
fk_fields = model_resource.get_fk_field()
qs = model.all()
params, qs = await model_resource.resolve_query_params(request, dict(request.query_params), qs)
params, qs = await model_resource.resolve_query_params(
request, dict(request.query_params), qs
)
filters = await model_resource.get_filters(request, params)
total = await qs.count()
if page_size:
qs = qs.limit(page_size)
else:
page_size = model_resource.page_size
qs = qs.offset((page_num - 1) * page_size)
values = await qs.values()
rendered_values, row_attributes, column_attributes, cell_attributes = await render_values(
request, model_resource, fields, values
)
if fk_fields:
objects = await qs.select_related(*fk_fields)
values = []
for obj in objects:
obj_as_dict = dict(obj)
for attr in fk_fields:
obj_as_dict[attr] = getattr(obj, attr)
values.append(obj_as_dict)
else:
values = await qs.values()

(
rendered_values,
row_attributes,
column_attributes,
cell_attributes,
) = await render_values(request, model_resource, fields, values)
context = {
"request": request,
"resources": resources,
Expand Down Expand Up @@ -241,10 +257,14 @@ async def create(
@router.delete("/{resource}/delete/{pk}")
async def delete(request: Request, pk: str, model: Model = Depends(get_model)):
await model.filter(pk=pk).delete()
return RedirectResponse(url=request.headers.get("referer"), status_code=HTTP_303_SEE_OTHER)
return RedirectResponse(
url=request.headers.get("referer"), status_code=HTTP_303_SEE_OTHER
)


@router.delete("/{resource}/delete")
async def bulk_delete(request: Request, ids: str, model: Model = Depends(get_model)):
await model.filter(pk__in=ids.split(",")).delete()
return RedirectResponse(url=request.headers.get("referer"), status_code=HTTP_303_SEE_OTHER)
return RedirectResponse(
url=request.headers.get("referer"), status_code=HTTP_303_SEE_OTHER
)

0 comments on commit 32b5cdb

Please sign in to comment.