Подход к разблокировке контента в Django после успешной оплаты - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть что-то вроде модели «Запросы на предложения» на моей домашней странице. Пользователь может создать запрос, а другие пользователи могут предложить контент для этого конкретного запроса. После того, как запрашивающий пользователь принял предложение и оплата была произведена, контент должен быть разблокирован / загружен.

Я думал о создании модели транзакции с «Запросы, предложения, состояние»

После того, как платеж был выполнен, штат должен измениться на «Активно», что приводит к активной кнопке «Скачать».

Вы бы порекомендовали этот подход (довольно новый для Django) или есть другие способы его реализации?

1 Ответ

0 голосов
/ 06 ноября 2018

Ты думаешь в правильном направлении. Но было бы хорошо, если бы вы могли показать свои модели, потому что довольно сложно спланировать архитектуру, поскольку всегда может быть дополнительная бизнес-логика. Просто начните с нуля:

Модель контента, которую пользователь может предложить

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 вы можете показать ссылку на скачивание контента и т. Д.

Как я сказал выше, невозможно предсказать схему без спецификаций. Я предлагаю вам просто начать кодирование.

...