gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 04:27:03 25 4
gpt4 key购买 nike

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

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com