python - 与 Django 中另一个模型的查询集创建多对多关系

标签 python django django-models

所以我有一个电子邮件模型,其中包含大量问题。目前,我希望电子邮件模型在保存模型时自动添加所有问题。

到目前为止,我的问题和电​​子邮件模型如下所示:

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() 但事实并非如此,所以任何帮助都会很棒。

最佳答案

我们可以使用 *questions 作为参数对已保存的对象调用 .questions.add() 来执行此操作。

首先我们将对象保存在数据库中。然后,我们使用 * 选项传递 questions 对象,将所有 questionsemail 对象关联起来。

您可以执行以下操作:

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(): 上的文档

add(*objs)
Adds the specified model objects to the related object set.

关于python - 与 Django 中另一个模型的查询集创建多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32951223/

相关文章:

django - Django 有 SmallIntegerField 的原因是什么?

python - 子类别 Django 商店

python:pandas安装错误

Django Haystack 更新索引更快

python - BERT 中变压器编码器和解码器的输入是什么?

django - 如何在管理面板中使用动态数据?

python - Django 服务器不对 CSS 进行更改

python - 如何在 Django 中过滤对象以进行计数注释?

python - 在numpy中将非常低的值设置为零

python - 在按钮游戏功能中插入分数