J'ai un modèle appelé Carte qui a une relation ManyToMany à Tag. Lorsque je sauvegarde une carte, je souhaite également créer un produit, que je souhaite utiliser pour la même relation ManyToMany.Enregistrer la méthode manytomany
Comment accéder aux tags de l'instance? self.tags.all()
donne une liste vide, alors que si je vérifie après l'enregistrement, la carte a en fait des balises. Mon code est ci-dessous. Pour l'anecdote, j'utilise Django 1.0.5.
class Card(models.Model):
product = models.ForeignKey(Product, editable=False, null=True)
name = models.CharField('name', max_length=50, unique=True, help_text='A short and unique name or title of the object.')
identifier = models.SlugField('identifier', unique=True, help_text='A unique identifier constructed from the name of the object. Only change this if you know what it does.', db_index=True)
tags = models.ManyToManyField(Tag, verbose_name='tags', db_index=True)
price = models.DecimalField('price', max_digits=15, decimal_places=2, db_index=True)
def add_product(self):
product = Product(
name = self.name,
identifier = self.identifier,
price = self.price
)
product.save()
return product
def save(self, *args, **kwargs):
# Step 1: Create product
if not self.id:
self.product = self.add_product()
# Step 2: Create Card
super(Card, self).save(*args, **kwargs)
# Step 3: Copy cards many to many to product
# How do I do this?
print self.tags.all() # gives an empty list??