Export bdd
Created by: chiahetcho
Add excel exportation option for Projets --> Participations and Utilisateurs --> Utilisateurs
Merge request reports
Activity
128 actions = ["export_as_csv"] 129 130 def export_as_csv(self, request, queryset): 131 meta = self.model._meta 132 field_names = [field.name for field in meta.fields] 133 134 response = HttpResponse(content_type='text/csv') 135 response['Content-Disposition'] = 'attachment; filename={}.csv'.format( 136 meta) 137 writer = csv.writer(response) 138 writer.writerow(field_names) 139 for obj in queryset: 140 row = writer.writerow([getattr(obj, field) 141 for field in field_names]) 142 return response 143 export_as_csv.short_description = "Exporter au format CSV" Created by: florimondmanca
Cette fonction n'a pas l'air d'être différente de celle pour
UserAdmin
. Une possibilité ce serait de créer une classe mixin, de ce genre :class CSVExportMixin: model = None def export_as_csv(self, request, queryset): meta = self.model._meta # ... mettre le contenu de l'action ici ... def get_actions(self, request): # on récupère les actions par défaut # (une liste vide si `actions` n'est pas défini) actions = super().get_actions(request) # on ajoute notre action d'export actions.append('export_as_csv') return actions
(Voir get_actions().)
Cette classe pourrait être dans
core/mixins.py
par exemple (vu que c'est réutilisable).Et on l'utiliserait comme ça:
class ParticipationAdmin(CSVExportMixin, ModelAdmin): # ... le reste de la classe, sans ce qui est déjà défini par CSVExportMixin
Please register or sign in to reply