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"
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)
Seul la ligne suivant à un effet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
admin.site.register(Photo, PhotoAdmin)
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)

Merci