支付成功后在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 到内容等

正如我上面所说,没有规范就无法预测架构。我建议你开始编码。