在自定义模型中存储 braintree 交易信息

Storing braintree Transaction info in custom model

我目前正在努力为我的一个应用程序设置支付系统。我要使用 braintree,目前我有三种不同的模型处理 payment/subscription。

其中之一是 'Transaction',我认为它应该包含我从 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.

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

braintree.Transaction 不是数据库中具有相应 table 的 Django 模型。您不能与它建立数据库关系。 braintree.Transaction 实际上只是为您的 Python 应用程序提供了一种与 Braintree 交易 API.

交互的便捷方式

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