【问题标题】:Storing braintree Transaction info in custom model在自定义模型中存储 Braintree 交易信息
【发布时间】:2015-09-19 16:24:21
【问题描述】:

我目前正试图为我的一个应用程序设置支付系统。我要使用braintree,目前我有三种不同的模型来处理付款/订阅。

其中一个是“交易”,我认为它应该包含我从 Braintree 收到的所有信息。所以我这样设置我的模型:

class Transaction(models.Model):
    created_at = models.DateField(auto_now_add=True)
    subscription = models.ForeignKey(Subscription)
    braintree_transaction_info = models.OneToOneField('braintree.Transaction')

    def __unicode__(self):
        return '{0}, at {1}'.format(self.subscription.user, self.date)

但是我得到了错误:

core.Transaction.braintree_transaction_info: (fields.E300) Field defines a relation with model 'braintree.Transaction', which is either not installed, or is abstract.

所以我的问题是如何将大脑树交易数据存储在我的模型中。我什至需要它吗?或者我可以在稍后阶段以其他方式获取它。

【问题讨论】:

  • 你的INSTALLED_APPS中是否有应用“braintree”?

标签: python django transactions braintree


【解决方案1】:

braintree.Transaction 不是 Django 模型,在您的数据库中有相应的表。您无法与它建立数据库关系。 Braintree.Transaction 实际上只是为您的 Python 应用程序提供了一种与 Braintree Transaction API 交互的便捷方式。

您可以做的是创建一个字符域来跟踪braintree 上的交易ID。您可以强制该字段是唯一的,这样每个 Braintree 交易只有 0..1 条交易记录。然后,您可以在 Transaction 上创建一个属性,或者您可以创建一个自定义对象管理器,根据需要通过 Braintree.Transaction 的方法透明地访问 Braintree。

【讨论】:

  • processing a transaction 时,您将收到一个Transaction object,其中包含该交易的所有详细信息,包括its id。如果您按照@SeanAzlin 的建议存储它,您可以使用它来检索交易并通过 Braintree Python 库执行其他与交易相关的功能。
  • 感谢您的意见!经过一段时间的修补,我想我陷入了一种思维方式。很明显,这就是现在要走的路
猜你喜欢
  • 1970-01-01
  • 2021-10-07
  • 2021-09-16
  • 2023-03-19
  • 2015-12-19
  • 2017-01-14
  • 2020-02-11
  • 2016-09-25
  • 1970-01-01
相关资源
最近更新 更多