Chr*_*rei 11 python django django-models django-admin
在Django管理站点中,我有这个类.我想保存一个对象的先前版本(服务器),这是一个很多的字段来查找对象的更改.
使用普通的CharField可以正常工作,但是对于许多领域我都遇到了这个错误:
"<SourceDestinationGroup: asdas>" needs to have a value for field "id" before this many-to-many relationship can be used.
Run Code Online (Sandbox Code Playgroud)
这是我的对象类
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
Run Code Online (Sandbox Code Playgroud)
M2M关系不会保存为save()方法的一部分.在admin中,保存主对象,然后保存m2m关系; 因此,通过序列化save方法中的标记列表,您可以在保存新值之前打印标记的值.如果要安装"post m2m save"行为,则需要覆盖管理员本身的更新视图.