Estoy intentando crear un código de producto (en el administrador) combinando elementos de otros dos campos, uno de los cuales es ManyToManyField. Me gustaría recorrer ese campo para averiguar si una opción específica del producto ha sido elegido, y anexar una variación de la misma para que el código del producto no editable, así:Django Novato ManyRelated Manager no Iterable Pregunta
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()
En este momento' Estoy recibiendo un mensaje de ManyRelatedManager no Iterable, entonces sé que estoy haciendo algo mal, pero no sé qué ... Me disculpo de antemano por ser una estúpida pregunta de novato. Gracias.
... así que algo como esto: def Guardar (auto): de producto en self.shirtclr.all(): si el artículo = = 'azul': self.shirtcode = u '% s% s' % ('B', self.shirtmodel) otra cosa: self.shirtcode = self.shirtmodel super (ShirtClass, auto) .save() No puedo lograr que funcione ... ShirtClass no iterable es el error. ¿Qué estoy haciendo mal? Gracias otra vez. – bkev
Creo que tenemos que dar un paso atrás y descubrir lo que en realidad está tratando de lograr aquí. –
Muchas gracias por su ayuda. Estoy tratando de salvar un tercer campo concatenando los componentes de los dos primeros ... la única complicación es que uno de los dos primeros es un ManyToManyField y no sé la forma correcta de acceder a sus contenidos en esta instancia. Mirando lo que escribí en la parte superior, no creo que necesite un bucle de espera allí ... cuando he usado Python antes, "en" me ha hecho el trabajo al mirar a través de una lista. Sin embargo, "si 'Blue' en self.shirtcode.all()" no parece funcionar para mí. Sigo pensando que esto no debería ser una tarea difícil ... pero me falta algo ... – bkev