Python使用相同的模型实例自动填充ManyToManyField

时间:2019-09-30 09:19:57

标签: django django-models

过去7天内,我一直无法解决问题,但仍然无法解决该问题!现在非常沮丧!

我想要用GroupMess创建新的admin时,同一管理员应自动添加到members字段中,

这是我的模特

class GroupMess(models.Model):
    admin = models.OneToOneField(
        User,
        on_delete=models.CASCADE,
        related_name='mess_admin'
    )
    members = models.ManyToManyField(User, related_name='mess_members', blank=True)

    def save(self, *args, **kwargs):
        self.members.add(self.admin)
        super(GroupMess, self).save(*args, *kwargs)

如果我尝试创建新的GroupMess,则会引发此错误:

"<GroupMess: GroupMess object (None)>" needs to have a value for field "id" before this many-to-many relationship can be used.

如果我这样重写save方法:

def save(self, *args, **kwargs):
        super(GroupMess, self).save(*args, *kwargs)
        self.members.add(self.admin)

然后它不会引发任何错误,但是问题是,members字段仍然为空

任何人都可以帮助解决此问题吗?

我想在创建GroupMess时在创建分组时添加管理员,并且members字段应自动填充admin

*我的意思是,组管理员也将是组成员*

1 个答案:

答案 0 :(得分:0)

将成员添加到“组”模型后,再次保存。

def save(self, *args, **kwargs):
        super(Group, self).save(*args, **kwargs)
        self.members.add(self.admin)
        self.save()
相关问题