gpt4 book ai didi

python - Django 从模型中保存以前的对象

转载 作者:太空狗 更新时间:2023-10-29 18:02:44 24 4
gpt4 key购买 nike

在 Django 管理站点中,我有这个类。我想保存对象 (Servers) 的先前版本,这是一个多对多字段以查找对象的更改。

使用普通的 CharField 这个工作,但是对于 manytomany 字段我得到这个错误:

"<SourceDestinationGroup: asdas>" needs to have a value for field "id" before this many-to-many relationship can be used.

这是我的对象类

class SourceDestinationGroup(models.Model):
STATE_CHOICES = (
('C', 'in Change'),
('F', 'Finished')
)
ServerGroupName = models.CharField(max_length=256)
Description = models.CharField(max_length=256,blank=True)
Servers = models.ManyToManyField(Server)
Status = models.CharField(max_length=1, choices=STATE_CHOICES, default='C')



def __init__(self, *args, **kw):
super(SourceDestinationGroup, self).__init__(*args, **kw)
self._old_Servers = self.Servers

def save(self, **kw):
if self.Servers != self._old_Servers:
self.Status = 'C'
self._old_Servers = self.Servers

super(SourceDestinationGroup, self).save(**kw)



def __str__(self):
return self.ServerGroupName

最佳答案

M2M 关系不会保存为 save() 方法的一部分。在admin中保存主对象,然后保存m2m关系;因此,通过在 save 方法中序列化标签列表,您可以在保存新值之前打印标签的值。如果你想安装“post m2m save”行为,你需要覆盖管理员本身的更新 View 。

关于python - Django 从模型中保存以前的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49254839/

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