Je souhaite enregistrer un objet pour que le M2M soit enregistré. Ensuite, je veux lire les champs M2M pour faire des calculs et définir un champ sur l'objet enregistré.Obtention de l'ID de l'objet nouvellement créé dans save()
class Item(models.Model):
name = models.CharField(max_length=20, unique=True)
product = models.ManyToManyField(SomeOtherModel, through='SomeTable')
def save(self, *args, **kwargs):
super(Item, self).save(*args, **kwargs)
m2m_items = SomeTable.objects.filter(item = self)
# DO SOME STUFF WITH THE M2M ITEMS
Les m2m_items ne s'afficheront pas. Y a-t-il un moyen de les obtenir?
Désolé ma mauvaise, j'ai mis l'information mal. J'ai réécrit ma question. Ce que je fais, c'est que j'essaie d'obtenir les nombreux objets. Mais pour une raison quelconque, ils ne se présenteront pas – Stephan
Merci pour votre réponse. J'essaie d'utiliser le signal m2m_changed maintenant. models.signals.m2m_changed.connect (set_total_price, sender = Deal.product.through) Il n'appellera pas ma méthode set_total_price pour une raison quelconque. Cela fonctionne avec le signal post_save ... Eh bien, j'ai encore des choses à essayer. Merci beaucoup. – Stephan
Pour en savoir plus: J'ai fini par lire le M2M dans le save_formset en itérant sur les instances. Ensuite, j'ai appelé l'élément enregistré et enregistré avec la nouvelle valeur. – Stephan