python - 在自定义模型中存储 Braintree 交易信息

标签 python django transactions braintree

我目前正在尝试为我的一个应用程序设置支付系统。我将使用 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 定义与模型“braintree.Transaction”的关系,该模型要么未安装,要么是抽象的。

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

最佳答案

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

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

关于python - 在自定义模型中存储 Braintree 交易信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32670534/

相关文章:

python - 根据列表过滤要删除的 pandas 数据框

django 脆皮形式 : Nesting a formset within a form

django - 我应该如何为使用 South 的 Django 应用程序设置 SOUTH_DATABASE_ADAPTERS?

postgresql - 在 GraphQL+Sequelize+CLS 中抛出错误后事务仍然自动提交

node.js - 如何使用 sails.js/waterline 进行交易?

python - Lambda 未在 Python 3.6 中创建实例方法

python - 如何使用 altair 在 hconcat 图表中显示两个不同的图例

python - 在 python,cgi-bin 中将图像返回给浏览器

django - Django 的调试器

java - Spring 从另一个项目导入应用程序上下文