2010-10-12 13 views
1

Je me demande s'il existe un moyen de calculer un champ dans le site d'administration basé sur une concaténation de plusieurs champs.Site d'administration Django: comment calculer le champ à partir de plusieurs champs valeur?

Fondamentalement, j'ai un modèle de produit avec différents champs associés à divers attributs (couleur, taille, longueur, etc.).

Je voudrais calculer la valeur de code à une concaténation des valeurs des différents champs d'attributs tels que:

code = colour + "_" + size + "_" + length 
+0

Ceci est un peu vague. Quand voulez-vous le calculer? Sur l'affichage? Voulez-vous enregistrer la valeur calculée dans la base de données? –

+0

hey. désolé pour le vague, je suis au tout début :) l'idéal serait qu'il soit calculé dynamiquement sur l'affichage comme dans l'auto-peupler. à coup sûr, il doit être sauvé. Merci! –

Répondre

0

Il y a quelques façons de le faire. Je l'ai fait des choses comme ça dans mes modèles de méthode clean:

def Product(models.Model) 
    # field definitions here 

    def clean(self): 
     self.code = self.colour + "_" + self.size + "_" + self.length 

le faire dans la couche modèle (qui ne fonctionne que sur les versions de Django 1.2 and above) a l'avantage que ce sera appliqué partout, pas seulement où vous utilisez un formulaire particulier.

+0

ne semble pas fonctionner: il déclenche une erreur de type "instance doit avoir une valeur de clé primaire avant qu'une relation plusieurs-à-plusieurs peut être utilisée.". La concaténation de chaînes ne semble pas fonctionner. –

0

voir ModelAdmin.prepopulated_fields