Django OneToOneField和信号

时间:2016-10-03 10:09:18

标签: django django-models django-signals

我有一个名为DeviceStatus的模型,与另一个名为OneToOne的模型有Device关系。我希望在保存之前将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

1 个答案:

答案 0 :(得分:3)

应该是实例方法

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

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

回复评论并在评论中扩展我的答案以发布

这需要做什么

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