如何获取外键的值

时间:2015-06-09 15:46:20

标签: python django

models.py中的两个班级:

class Purchase(models.Model):
    book_id = models.CharField(max_length=20, primary_key=True)
    storage_id = models.CharField(max_length=20)
    def __str__(self):
        return self.book_id

class Delivery(models.Model):
    book_id = models.CharField(max_length=20, primary_key=True)
    storage_id = models.ForeignKey('Purchase', editable=True)
    def __str__(self):
        return self.book_id

保存表单后,我使用以下代码获取发送中storage_id的值:

@receiver(post_save, sender = Delivery)
def removeProducts(sender, instance, **kwargs):
    print(instance.storage_id)

问题是,我得到的不是Delivery.storage_id,而是Purchase.book_id。如何在不更改Delivery.storage_id函数的情况下获取__str__的值?

1 个答案:

答案 0 :(得分:3)

首先,不要调用您的ForeignKey字段foo_id。它不是ID,它是实际的对象。我也不确定为什么该字段被称为storage,但它链接的模型是Purchase。它应该是:

purchase = models.ForeignKey('Purchase', editable=True)

现在我们已经消除了一个对象和一个字段之间的混淆,我们可以简单地遵循这种关系:

print(instance.purchase.storage_id)