簡體   English   中英

與Django中另一個模型的查詢集創建多對多關系

[英]Create many to many relation with query set of another model in Django

因此,我有一個包含大量問題的電子郵件模型。 現在,我希望電子郵件模型在保存模型時自動添加所有問題。

到目前為止,這是我的問題和電​​子郵件模型的樣子:

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()上的文檔中

加(* OBJ文件)
將指定的模型對象添加到相關的對象集中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM