Django 1.8,默认值很多很多字段都不起作用

时间:2015-09-12 01:13:26

标签: django django-models manytomanyfield 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))

我有一个名为defaultM2M的函数来更改我的ManyToMany属性中的默认值' Libro',所以问题是当我创建一个新对象' Libro'时,它与我的默认Autor,无论我选择另一个Autor,我的对象' Libro'用2' Autor'创建。对象,默认Autor和选择的Autor。如何在没有此问题的情况下设置Autor默认值?

由于

1 个答案:

答案 0 :(得分:0)

查看Django文档default似乎不是ManyToMany字段的选项。但是,您可以重载save()方法以实现您想要的效果:

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