2015-09-12 1 views
0

je modèle suivant:Valeur par défaut Beaucoup Pour champs ne fonctionne pas, Django 1.8

class Editor(models.Model): 
    nombre = models.CharField(max_length=30) 
    domicilio = models.CharField(max_length=50) 
    #.... 

class Autor(models.Model): 
    nombre = models.CharField(max_length=30) 
    apellido = models.CharField(max_length=40) 
    email = models.EmailField(blank=True, verbose_name='e-mail') 
    #.... 

def defaultM2M(): 
    return [Autor.objects.first().pk] 

class Libro(models.Model): 
    titulo = models.CharField(max_length=100) 
    autores = models.ManyToManyField(Autor, default=default2M2) 
    editor = models.ForeignKey(Editor, default=Editor.objects.filter(pk=1)) 

J'ai une fonction nommée defaultM2M pour changer la valeur par défaut dans mon attribut ManyToMany pour « Libro », de sorte que la question C'est quand je crée un nouvel objet 'Libro', ceci est en relation avec mon Autor par défaut, peu importe si je choisis un autre Autor, Mon objet 'Libro' est créé avec 2 objets 'Autor', Autor par défaut et Autor choisi. Comment pouvez définir l'option par défaut Autor sans ce problème?

Merci

Répondre

0

En regardant Django docs default ne semble pas être une option pour ManyToMany champs. Vous pouvez cependant surcharger la méthode save() pour obtenir ce que vous voulez:

def save(self, *args, **kwargs) 
    if 'autores' not in kwargs: 
     kwargs['autores'] = defaultM2M() 
    super(Libro, self).save(*args, **kwargs)