mirror of
https://github.com/fastapi-admin/fastapi-admin.git
synced 2025-08-14 10:47:30 +08:00
Merge pull request #92 from photopills/render-fk-values-inside-resource-list
Render fk values inside resource list
This commit is contained in:
@ -28,8 +28,11 @@ 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:
|
||||
@ -37,10 +40,23 @@ async def list_view(
|
||||
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,
|
||||
@ -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
|
||||
)
|
||||
|
Reference in New Issue
Block a user