如何使用django信号访问字段

问题描述 投票:0回答:2

我想在将新记录保存到我的Django数据库时检查字段(lightStatusA)的值。我觉得我曾经读过10次文档而仍然无法掌握如何获得这个。这是我目前的models.py代码:

from django.db import models
from accounts.models import Customer
from django.conf import settings
from django.contrib.auth import get_user_model
from django.db.models.signals import post_save

class Data(models.Model):
    author = models.ForeignKey(get_user_model(),on_delete=models.CASCADE,)
    tempData= models.CharField(max_length=50,blank=True,)
    humidData= models.CharField(max_length=50,blank=True,)
    lightStatusA= models.BooleanField(default=True,) 
    dateTime = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return str(self.author)

def check_light_status(sender, **kwargs):
    if kwargs['created']: #make sure its a new record
        #need logic to grab instance.lightStatusA and check it's value

post_save.connect(check_light_status, sender = Data)

有没有办法将这个值作为参数传递给信号?

python django django-signals
2个回答
1
投票

check_light_status函数可以接受instance参数。

来自the docs

例 保存的实际实例。

更新:你这样说:

instance返回帖子的作者。

我将使用我的演绎力猜测你尝试了print(instance)并看到了作者。看看你的__str__实现。

def __str__(self):
    return str(self.author)

我会说你在那里破坏了自己;)


0
投票

啊,好吧得到了:

def check_light_status(sender, instance, **kwargs):
    if kwargs['created']: #make sure its a new record
        print(instance.lightStatusA)

这将打印我需要运行一些逻辑的字段。

© www.soinside.com 2019 - 2024. All rights reserved.