我很难掌握来自 django 的 post_save/pre_save 信号。
发生的情况是我的模型有一个名为的字段status
,当添加/保存该模型的条目时,必须根据某些条件相应地更改其状态。
我的模型如下所示:
class Ticket(models.Model):
(...)
status = models.CharField(max_length=1,choices=OFFERT_STATUS, default='O')
还有我的信号处理程序,为 pre_save 配置:
def ticket_handler(sender, **kwargs):
ticket = kwargs['instance']
(...)
if someOtherCondition:
ticket.status = 'C'
现在,如果我在ticket.save()
最后一行if
语句的下方添加一个巨大的迭代黑洞会发生什么,因为这个动作调用了信号本身。这个问题发生在pre_save
和post_save
中。
嗯...我猜想在保存之前(甚至之后)更改条目的能力在 django 的世界中很常见。那么,我在这里做错了什么?信号是错误的方法还是我在这里遗漏了其他东西?
此外,一旦触发此 pre_save/post_save 函数,是否有可能访问另一个模型的实例并更改其上的特定行条目?
谢谢