检测模型是否已作为外键添加到其他模型中

时间:2017-09-22 07:47:06

标签: django django-models

假设我有一些模型实例A1,现有模型B1和B2将A1作为外键字段fk。有没有办法让模型实例A1知道另一个新创建的模型实例B3已将其分配为fk字段(每次模型B使用A1作为其fk并跟踪计数器更改时,无需设置某种计数器) ?

最终,当其他用户发布问题时(例如模型A实例),我喜欢类似于用户如何收到新答案或评论(比如模型B实例)的通知。

任何有效执行此操作的建议都将受到赞赏。谢谢:))

1 个答案:

答案 0 :(得分:0)

尝试使用django post保存信号

当在模型中保存任何条目时,执行后保存信号,您可以在保存后信号中找到对象有fk或不具有fk。

请参阅以下代码。

from django.db.models.signals import post_save
from django.dispatch import receiver

class YourModel(models.Model):
    # ... fields here

# method for fk is assigned or not
@receiver(post_save, sender=YourModel)
def signal_name(sender, instance, **kwargs):
     if instance.fk:
         # Do your stuff

有关详细信息,请参阅django signal

这可能会帮助您找出fk是否已分配。