默认值多对多字段不起作用,Django 1.8
Default Value Many To Many Field doesn't work, 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 的函数来更改 'Libro' 的 ManyToMany 属性中的默认值,所以问题是当我创建一个新对象 'Libro' 时,这与我的默认 Autor 有关,无论我是否选择另一个 Autor,我的对象 'Libro' 都是用 2 'Autor' 个对象创建的,默认 Autor 和选择的 Autor。如何在没有这个问题的情况下设置 Autor 默认值?
谢谢
查看 Django 文档 default
似乎不是 ManyToMany
字段的选项。但是,您可以重载 save()
方法来实现您想要的:
def save(self, *args, **kwargs)
if 'autores' not in kwargs:
kwargs['autores'] = defaultM2M()
super(Libro, self).save(*args, **kwargs)
我有以下型号:
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 的函数来更改 'Libro' 的 ManyToMany 属性中的默认值,所以问题是当我创建一个新对象 'Libro' 时,这与我的默认 Autor 有关,无论我是否选择另一个 Autor,我的对象 'Libro' 都是用 2 'Autor' 个对象创建的,默认 Autor 和选择的 Autor。如何在没有这个问题的情况下设置 Autor 默认值?
谢谢
查看 Django 文档 default
似乎不是 ManyToMany
字段的选项。但是,您可以重载 save()
方法来实现您想要的:
def save(self, *args, **kwargs)
if 'autores' not in kwargs:
kwargs['autores'] = defaultM2M()
super(Libro, self).save(*args, **kwargs)