Django OneToOneField 和信号

Django OneToOneField and signals

我有一个名为 DeviceStatus 的模型,它与另一个名为 Device 的模型有 OneToOne 关系。我想在保存之前将 id 传递给 DeviceStatus 对象,但我得到的只是一个 ForwardManyToOneDescriptor 对象。

class DeviceStatus(TimeStampedModel):
    device = models.OneToOneField(Device)
    # other fields

    def __unicode__(self):
        return u'{}'.format(self.device)

    def copy_to_archive(**kwargs):
        print DeviceStatus.device

    pre_save.connect(copy_to_archive)

有人可以指导我如何获取传递的设备 ID 吗? TIA

应该是实例方法

def copy_to_archive(self, **kwargs):
    print self.device

这样连接信号也不行。但这是不同的问题。

正在回答评论并将我在评论中的回答扩展到 post

这是需要完成的工作

class MyClass(models.Model):
    #....
    @classmethod
    def before_save(cls, sender, instance, *args, **kwargs):
        instance.test_field = "It worked"

pre_save.connect(MyClass.before_save, sender=MyClass)

Django 1.2: How to connect pre_save signal to class method