我有以下型号:
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默认值?
由于
答案 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)