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__
的值?
答案 0 :(得分:3)
首先,不要调用您的ForeignKey字段foo_id
。它不是ID,它是实际的对象。我也不确定为什么该字段被称为storage
,但它链接的模型是Purchase
。它应该是:
purchase = models.ForeignKey('Purchase', editable=True)
现在我们已经消除了一个对象和一个字段之间的混淆,我们可以简单地遵循这种关系:
print(instance.purchase.storage_id)