2015-03-30 1 views
0

J'ai un problème stupide avec l'enregistrement Django M2M. Je ne pas utiliser Django Admin (utiliser mes propres modèles personnalisés)Django M2M sauvegarde et ajoute une relation pour chaque parent

Donc, j'ai relation simple:

# models 
class News(models.Model): 
    title = models.CharField(max_length=256) 

class Webmaster(AbstractUser): 
    ... 
    news = models.ManyToManyField(News) 

J'ai besoin après avoir sauvé toutes les marques de nouvelles comme nouveau à chaque webmaster. Donc, je me dis que quelque chose comme ceci:

# models 
class News(models.Model): 
    title = models.CharField(max_length=256) 

    def save(self, *args, **kwargs): 
     if self.id: 
      news = News.objects.all()[0] 
      self.webmasters.add(news) 
     super(News, self).save(*args, **kwargs) 

Mais j'essaie comme 6-7 différentes façons, et mon code ne fonctionne toujours pas, pouvez-vous aider? Merci!

Répondre

0

Vous devez utiliser le signal de post_save(), ajoutez ce code dans models.py

def Webmaster_add(sender, instance, **kwargs): 
    #you can put here some condition stuff 
    w = Webmasters.objects.all() 
    for obj in w: 
     obj.news.add(instance) 

# register the signal 
post_save.connect(webmaster_add, sender=News) 
+0

S'il veut le faire pour tous les webmasters qu'il aurait à interroger tous les webmasters à l'intérieur du signal et ajouter l'instance . – lapinkoira

+0

merci! Je vais essayer ça .. Je veux vraiment ajouter des nouvelles à chaque webmaster. –

+0

'type objet 'Webmaster' n'a pas d'attribut 'add'' –