我如何从Django的信号中获取父模型对象

时间:2019-12-13 05:45:47

标签: python django django-models foreign-keys

我是python和Django的初学者。 你能给我解释一下,我如何从一个原子关系中获得信号的父模型。 例如,我有2个模型:

class ModelOne(models.Model):
 name = models.CharField(max_length=20)

class Modeltwo(models.Model):
 comment = models.CharField(max_length=20)
 mo = models.ForeignKey(ModelOne)

并发出发帖请求的信号:

@receiver(post_save)
def post_save_model(sender,instance,**kwargs):
 print("Signal: ",instance.objects.all().last())

保存ModelTwo时如何在post_save_model函数中获取ModelOne的相关对象?

2 个答案:

答案 0 :(得分:0)

通过预取,如下所示:

Modeltwos.objects.prefetch_related('modelone_set')

答案 1 :(得分:0)

您可以尝试这样:

@receiver(post_save, sender=ModelTwo)
def post_save_model(sender,instance,**kwargs):
     print("ModelOne: ", instance.mo)

因为ModelOneModelTwo的外键,由字段名称mo连接。如果要使所有ModelTwo实例都连接到该ModelOne实例,请尝试如下操作:

@receiver(post_save)
def post_save_model(sender,instance,**kwargs):
    all_model_two_instances_queryset = instance.mo.modeltwo_set.all()