How can I improve the speed of polygon intersection?

I have the code below where I take the geometry of a base area and take other geometries to intersect the first one. However, I get performance problems mainly for large base areas. How can I improve?

obj = model.objects.filter(**filters).first()

car_geom = obj.geom
filter_conditions = {'geom__intersects': car_geom}

fire_data = Fires_map.objects.filter(**filter_conditions)

fires = list(fire_data)
for fire in fires:
    intersection = fire.geom.intersection(car_geom)
    if isinstance(intersection, Polygon):
        intersection = MultiPolygon([intersection])
    fire.geom = intersection
    area_ha = intersection.transform(3857, clone=True).area
    fire.area_ha = area_ha / 10000

for fire in fires:
    fire.area_ha = round(float(fire.area_ha), 2)

Generally speaking, the more you can delegate to the database, the more speed you gain.

Typically in this case, you should build the intersection polygons through the database instead of in Python code, and maybe even the area, something like

Fires_map.objects.filter(**filter_conditions).annotate(
    intersection=Intersection(car_geom, F("geom")),
    area=Area(Transform(Intersection(car_geom, F("geom")), 3857)),
)

Warning, this is completely untested, but you see the idea.