所以我有一个电子邮件模型,其中包含大量问题。目前,我希望电子邮件模型在保存模型时自动添加所有问题。
到目前为止,这是我的问题和电子邮件模型的样子:
class Email(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
name = models.CharField(max_length=100)
slug = models.SlugField()
jobnumber = models.IntegerField()
developer = models.ForeignKey(User, related_name="developer")
questions = models.ManyToManyField('Question', related_name="questions")
checked_questions = models.ManyToManyField('Question', related_name="checked_questions")
signed_off = models.BooleanField(default=False)
def save(self, *args, **kwargs):
self.slug = slugify(self.name)
self.questions = Question.objects.all()
super(Email, self).save(*args, **kwargs)
def __unicode__(self):
return self.name
def get_absolute_url(self):
return reverse('checklists:detail', args=[str(self.slug)])
class Question(models.Model):
title = models.CharField(max_length=100)
def __unicode__(self):
return self.title
我认为这只会有效self.questions = Question.objects.all()
但事实并非如此,任何帮助都会很棒。
答案 0 :(得分:2)
我们可以使用.questions.add()
作为参数调用已保存对象上的*questions
。
首先我们将对象保存在db中。然后,我们使用questions
选项传递*
个对象,将所有questions
与email
对象相关联。
您可以执行以下操作:
class Email(models.Model):
def save(self, *args, **kwargs):
self.slug = slugify(self.name)
super(Email, self).save(*args, **kwargs) # save the object first
question_objs = Question.objects.all()
self.questions.add(*question_objs) # add all questions using *
来自.add()
:
添加(* OBJ文件)强>
将指定的模型对象添加到相关对象 集。