2009-08-31 11 views
1

Je veux étendre le panneau d'administration de Django où l'ajout/le changement se produit pour un objet spécifique, par exemple Foo. J'ai déjà fait beaucoup de recherches et trouvé une partie en discutant à l'ancienne version djangobook.django, extension du formulaire d'ajout/modification à l'administrateur

J'ai créé un admin/myapp/foo/change_list.html dans mon répertoire de template et j'ai fait quelques expériences comme l'ajout de html et ça marche bien.

Et c'est où le problème commence, je dois modifier la vue de cet affichage d'administration (pas surcharger le tout mais juste l'étendre) de sorte que, avec un petit formulaire GET/POST à ​​change_list.html, je veux de faire une action spécifique tel que:

dire que j'ai 2 objets Foo et Bar:

class Bar(models.Model): 
    bar_text = models.TextField() 


class Foo(models.Model): 
    name = models.TextField() 
    my_bar = models.models.ForeignKey(Bar) 

L'interface d'administration régulière tout en ajoutant un nouveau Foo, je peux choisir un seul foreignKey de my_bar comme il devrait être, maintenant je veux une case à cocher à la fin de la page "ajouter à tous" qui fait la même entrée (nom pour mon exemple) connecté pour tous les objets Bar. Donc après sauvegarde, j'aurai plusieurs objets Foo qui ont le même champ "nom" et chacun a une connexion Bar différente

Répondre

0

si vous savez comment étendre l'admin (je suppose que de votre post), tout ce dont vous avez besoin est de Remplacer la méthode save() du formulaire, donc il met à jour tous les foos si la case est cochée. Ai-je bien compris ce dont vous avez besoin ou j'ai manqué sth?

def save(self): 
    if (self.cleaned_data['save_to_all']): 
     foos = Foo.objects.all() 
     for obj in foos: 
      obj.name = self.cleaned_data['name'] 
      obj.save() 
    super(FooForm, self).save() 

Questions connexes