3 votes

Dans l'administration de Django, comment ajouter un champ pour le verso d'un champ ManyToManyField ?

J'ai deux modèles, 'Product' et 'Range', qui doivent être liés par un champ many to many. La classe 'Produit' est dans une application que je n'ai pas écrite, donc elle ne peut pas être modifiée (je peux cependant modifier le modeladmin pour elle). Je veux que les 'Ranges' dans lesquelles se trouve un 'Produit' soient éditables dans l'administration, et je veux le faire avec un FilteredSelectMultiple, pas en ligne dans l'administration.

simplifié 'models.py' :

class Product(models.Model):
    name = models.CharField(max_length=64)
    #etc...
    #I can't modify this class

class Range(models.Model):
    name = models.CharField(max_length=32)
    products = models.ManyToManyField(Product, related_name='ranges')

et admin.py :

class ProductAdmin(admin.ModelAdmin):
    # What do I put here to get a multi-select box for ranges?
    # Preferrably with one of those 'add' buttons to popup a window
    # to add ranges.

Si je pouvais modifier Products, je pourrais y ajouter un champ ManyToManyField en utilisant la table de passage existante, et cela fonctionne bien, mais comme indiqué, je ne peux pas (ou ne veux pas car cela rendrait les mises à jour de l'application externe vraiment pénibles).

Merci d'avance pour toute aide ! (PS : j'espère qu'il est facile de voir ici pourquoi je ne veux pas utiliser de formulaires d'administration en ligne - cela rend l'interface utilisateur inutilement complexe).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X