支付成功后在Django中解锁内容的方法
Approach to unlock content in Django after a successful payment
我的主页上有类似“请求到要约”的模型。一个用户可以创建一个请求,其他用户可以为这个特定的请求提供内容。在发出请求的用户接受报价并完成付款后,内容应该可以解锁/下载。
我考虑过使用“请求、报价、状态”创建交易模型
付款完成后,状态应更改为“活动”,这会导致“下载”按钮处于活动状态。
这是您会推荐的方法吗(对 Django 来说相当新)还是有其他方法可以实现它?
您的思考方向是正确的。但是,如果您可以展示您的模型,那就太好了,因为规划您的架构非常困难,因为总是会有额外的业务逻辑。从零开始:
用户可以提供的内容模型
class Content(models.Model):
owner = models.ForeignKey(User, on_delete=models.CASCADE)
content = models.RichTextField()
请求模型。用户可以创建其他用户可以看到的请求。
class Request(models.Model):
requestor = models.ForeignKey(User, on_delete=models.CASCADE)
description = models.TextField()
任何用户如果有内容(可以是特殊类型的内容,idk)都可以用报价响应请求:
class Offer(models.Model):
PENDING = 'pending'
WAITING_FOR_PAYMENT = 'waiting_for_payment'
PAYMENT_COMPLETE = 'payment_complete'
DECLINED = 'declined'
STATE_CHOICES = (
(PENDING, _('Pending')),
(WAITING_FOR_PAYMENT, _('Waiting for payment'),
(PAYMENT_COMPLETE, _('Payment complete')),
(DECLINED, _('Declined')),
)
request = models.ForeignKey(Request, on_delete=models.CASCADE)
content = models.ForeignKey(Content, on_delete=models.CASCADE)
state = models.Charfield(max_length=32, choices=STATE_CHOICES, default=PENDING)
您可以管理优惠的状态。例如,如果 state=PAYMENT_COMPLETE
您可以显示下载 link 到内容等
正如我上面所说,没有规范就无法预测架构。我建议你开始编码。
我的主页上有类似“请求到要约”的模型。一个用户可以创建一个请求,其他用户可以为这个特定的请求提供内容。在发出请求的用户接受报价并完成付款后,内容应该可以解锁/下载。
我考虑过使用“请求、报价、状态”创建交易模型
付款完成后,状态应更改为“活动”,这会导致“下载”按钮处于活动状态。
这是您会推荐的方法吗(对 Django 来说相当新)还是有其他方法可以实现它?
您的思考方向是正确的。但是,如果您可以展示您的模型,那就太好了,因为规划您的架构非常困难,因为总是会有额外的业务逻辑。从零开始:
用户可以提供的内容模型
class Content(models.Model):
owner = models.ForeignKey(User, on_delete=models.CASCADE)
content = models.RichTextField()
请求模型。用户可以创建其他用户可以看到的请求。
class Request(models.Model):
requestor = models.ForeignKey(User, on_delete=models.CASCADE)
description = models.TextField()
任何用户如果有内容(可以是特殊类型的内容,idk)都可以用报价响应请求:
class Offer(models.Model):
PENDING = 'pending'
WAITING_FOR_PAYMENT = 'waiting_for_payment'
PAYMENT_COMPLETE = 'payment_complete'
DECLINED = 'declined'
STATE_CHOICES = (
(PENDING, _('Pending')),
(WAITING_FOR_PAYMENT, _('Waiting for payment'),
(PAYMENT_COMPLETE, _('Payment complete')),
(DECLINED, _('Declined')),
)
request = models.ForeignKey(Request, on_delete=models.CASCADE)
content = models.ForeignKey(Content, on_delete=models.CASCADE)
state = models.Charfield(max_length=32, choices=STATE_CHOICES, default=PENDING)
您可以管理优惠的状态。例如,如果 state=PAYMENT_COMPLETE
您可以显示下载 link 到内容等
正如我上面所说,没有规范就无法预测架构。我建议你开始编码。