成功付款时更新数据库djang

2024-04-19 06:47:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为“展览”的模型,在这里,我允许用户在填写表格后创建一个新的展览/活动,他们被要求支付一些金额,并被重定向到一个支付网关(paypal根据django-paypal),成功付款后,我想更新我的'展览'表只为那些已经付款的人,用户被要求在创建事件之前登录,我还将用户与表单一起保存在我的数据库中。在

这是我保存表单的视图:

def new_event(request):
    form = NewEventForm(request.POST or None)
    if form.is_valid():
        save_it = form.save(commit=False)
        save_it.user = request.user
        save_it.save()

    return render_to_response('new_event.html',locals(), context_instance=RequestContext(request))        

我的模特:

^{pr2}$

如果我使用django paypal视图,我将能够处理付款,但我不知道如何获得正确的'Exhibition-id'来更新数据库,我是否应该将其存储在cookies中以及如何进行?在


Tags: django用户模型formevent视图数据库表单
2条回答

我建议添加一个包含用户id的自定义字段,并在paypal通知您时恢复它。在

参见下面的自定义: https://developer.paypal.com/webapps/developer/docs/classic/ipn/integration-guide/IPNandPDTVariables/

我会尝试在django paypal的模型PayPalStandardBase中添加post-save信号处理程序,然后使用事务记录的字段来标识您的展览记录。您可以使用您模型的主键字段并告诉paypal这是您的交易项目编号,或者只添加任何其他您想用作公共标识符的唯一字段。在

请查看模型:

https://github.com/spookylukey/django-paypal/blob/master/paypal/standard/models.py

信号处理程序如下所示:

@receiver(post_save, sender=PayPalStandardBase)
def mark_as_paid(sender, instance=None, created=False, **kwargs):
    if created:
        e = Exhibition.objects.get(pk=instance.item_number)
        e.Paid = ...
        e.save()

您可以将其添加到模型.py你的还是一个信号.py然后从别处进口。在

相关问题 更多 >