Bonjour,
Je cherche à afficher plusieurs listes dans la navbar à gauche à partir du même modèle MAIS avec un nom d'affichage du lien différent et une query_set différente.
A ce que j'ai compris je dois utiliser une classe proxy pour surcharger ma classe mais cela ne fonctionne pas (je dois mal m'y prendre)
model.py
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 class CategoriePhoto(models.Model): class Meta: verbose_name_plural = "catégories de photo" verbose_name = "une catégorie de photo" nom = models.CharField(max_length=30) corporate = models.BooleanField() def __str__(self): """retourne un object lisible""" return self.nom @admin.display( description='Nombre de photos', ) def how_many_photo(self): # ici je récupère le nombre de photo pour la catégorie en cours return Photo.objects.filter(categorie__photo=self.pk).count() class Photo(models.Model): nom = models.CharField(max_length=30) categorie = models.ForeignKey(CategoriePhoto, on_delete=models.CASCADE, null=True, blank=True) fichier = models.ImageField(upload_to='images_prestations/', verbose_name='photo') mariage = models.BooleanField() def __str__(self): """retourne un object lisible""" return self.nom class PhotoMariage(Photo): class Meta: proxy = True verbose_name = "photo de mariage" # verbose_name_plural = "photos de mariage"Seul la ligne suivant à un effet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 class PhotoAdmin(admin.ModelAdmin): def changelist_view(self, request, extra_context=None): extra_context = {'title': 'Sélectionnez la photo à changer'} return super(PhotoAdmin, self).changelist_view(request, extra_context=extra_context) def add_view(self, request, object_id=None, form_url='', extra_context=None): extra_context = {'title': 'Ajout d\'une photo'} return super().add_view(request, extra_context=extra_context) def change_view(self, request, object_id, form_url='', extra_context=None): extra_context = {'title': 'Modification d\'une photo'} return super().change_view(request, object_id, form_url, extra_context=extra_context) def get_queryset(self, request): qs = super().get_queryset(request) return qs.filter(mariage=False) class PhotoMariageAdmin(admin.ModelAdmin): def changelist_view(self, request, extra_context=None): extra_context = {'title': 'Sélectionnez la photo de mariage à changer'} return super(PhotoMariageAdmin, self).changelist_view(request, extra_context=extra_context) def add_view(self, request, object_id=None, form_url='', extra_context=None): extra_context = {'title': 'Ajout d\'une photo de mariage'} return super().add_view(request, extra_context=extra_context) def change_view(self, request, object_id, form_url='', extra_context=None): extra_context = {'title': 'Modification d\'une photo de mariage'} return super().change_view(request, object_id, form_url, extra_context=extra_context) # j'utilise get_queryset pour modifier ce qui est affiché dans la liste, # ici je n'affiche que les photos de mariage def get_queryset(self, request): qs = super().get_queryset(request) return qs.filter(mariage=True) admin.site.register(Photo, PhotoAdmin) admin.site.register(PhotoMariage, PhotoMariageAdmin)
Je n'arrive donc pas à afficher plusieurs fois la liste de photo à l'aide des classes proxy contrairement à ce que j'ai pu lire sur d'autres forum (rien trouvé dans la doc, ou pas su où chercher exactement)
Code : Sélectionner tout - Visualiser dans une fenêtre à part admin.site.register(Photo, PhotoAdmin)
Merci
Partager