Django self.delete()给出错误:“删除”;实例需要有主键值才能使用多对多关系;

Django self.delete()给出错误:“删除”;实例需要有主键值才能使用多对多关系;,django,django-models,Django,Django Models,我有三种型号。我们将它们称为Mod1、Mod1Request和UserProfile Mod1Request看起来像: class Mod1Request(models.Model): date_requested = models.DateField(auto_now_add=True) mod1s = models.ManyToManyField('Mod1') user = models.ForeignKey(User) approved = models.BooleanField() d

我有三种型号。我们将它们称为Mod1、Mod1Request和UserProfile

Mod1Request看起来像:

class Mod1Request(models.Model):
date_requested = models.DateField(auto_now_add=True)
mod1s = models.ManyToManyField('Mod1')
user = models.ForeignKey(User)
approved = models.BooleanField()
def save(self, *args, **kwargs):
    if self.approved:
        for c in list(self.mod1s.all()):
            mod = mod1.objects.get(id=c.id)
            self.user.get_profile().mod1s.add(mod)
        self.delete()
    else:
        super(Mod1Request, self).save(*args, **kwargs)
然后UserProfile有一个“mod1s”属性,它是Mod1的ManyToManyField。我试图做到的是: 保存Mod1Request时,如果设置了Approved,则将Mod1Request中列出的Mod1添加到UserProfile,然后删除Mod1Request本身

此功能一直工作到删除自身为止。如果删除self.delete()行,那么Mod1Request中的Mod1实例将正确添加到UserProfile.mod1s中。但是,如果将其保留在中,则会出现以下错误:

'Mod1Request' instance needs to have a primary key value before a many-to-many relationship can be used.
任何帮助都将不胜感激


编辑:我应该澄清,Mod1Request由一个用户在表单中输入,然后由另一个(管理员)用户批准。因此,管理员用户检查已批准并“保存”Mod1Request。然后,mod1请求应该将mod1添加到用户配置文件中并删除自身。

只需删除
self.delete()
-您不需要它。因为您没有为已批准的对象调用超类
save
方法,所以它们实际上从未保存到数据库中。

我编辑了描述以澄清我试图做的事情。基本上,我希望在将mod1添加到UserProfile后从数据库中删除请求。