J'essaye de créer un code de produit (dans l'admin) en combinant des éléments de deux autres champs - dont un ManyToManyField. Je voudrais itérer ce domaine pour savoir si une option de produit spécifique a été choisi, et ajouter une variante de celui-ci à ce code produit non modifiable, comme ceci:Django Débutant ManyRelated Manager non Iterable Question
class ShirtColorClass(models.Model):
shirtcolor = models.CharField(_('Shirt Color'), unique=True, max_length=40)
def __unicode__(self):
return self.shirtcolor
class ShirtClass(models.Model):
shirtmodel = models.CharField(_('Model of Shirt'), max_length=40)
shirtclr = models.ManyToManyField(_(ShirtColorClass, verbose_name='Shirt Color'))
shirtcode = models.CharField(_('Code for the shirt'), max_length=80, editable=False)
#...10 more fields...
def __unicode__(self):
return self.shirtmodel
def save(self):
for item in self.shirtclr: #these are the lines I'm not sure how to do
if 'Blue' in self.shirtclr:
self.shirtcode = u'%s%s' % ('B', self.shirtmodel)
else:
self.shirtcode = self.shirtmodel
super(ShirtClass,self).save()
Au moment je Je reçois un message ManyRelatedManager non Iterable, donc je sais que je fais quelque chose de mal, mais je ne sais pas quoi ... Je m'excuse d'avance pour que ce soit une question de débutant stupide. Je vous remercie.
... donc quelque chose comme ceci: def save (auto): pour objet self.shirtclr.all(): si item = = 'Blue': self.shirtcode = u '% s% s' % ('B', self.shirtmodel) autre: self.shirtcode = self.shirtmodel super (ShirtClass, auto) .save() Je ne peux pas vraiment faire fonctionner ça ... ShirtClass pas itérable est l'erreur. Qu'est-ce que je fais mal? Merci une fois de plus. – bkev
Je pense que nous devons prendre du recul et découvrir ce que vous essayez réellement d'accomplir ici. –
Merci beaucoup pour votre aide. J'essaie de sauver un troisième champ en concaténant les composants des deux premiers ... la seule complication est que l'un des deux premiers est un ManyToManyField et je ne connais pas la bonne façon d'accéder à son contenu dans cette instance. En regardant ce que j'ai tapé en haut, je ne pense pas avoir besoin d'une boucle for ... là où j'ai déjà utilisé Python, "in" a fait le travail pour moi quand j'ai regardé une liste. Cependant, "si 'Blue' dans self.shirtcode.all()" ne semble pas fonctionner pour moi. Je continue à penser que cela ne devrait pas être une chose difficile à accomplir ... mais il me manque quelque chose ... – bkev