订阅数据库过期后自动删除订阅数据库中的项目?

时间:2013-08-27 05:20:48

标签: python django paypal subscription paypal-subscriptions

我正在创建一个网站,用户可以订阅一个月的套餐(与简报订阅5美元/月相同)。我该如何管理这些订阅包。我是否需要在到期日后永久删除该项目?什么是最好的方法。

models.py

class avail_packs(models.Model):
    pack_name = models.CharField(max_length=100)
    pack_description = models.TextField()
    pack_duration_days = models.IntegerField(default=0)
    pack_cost = models.IntegerField(default=0)      

class selected_packs(models.Model):
    user = models.ForeignKey(User)
    pack = models.ForeignKey(avail_packs)
    activation_date = models.CharField(max_length=100)        
    quantity = models.IntegerField(default=0)

假设有一个说青铜的包

pack_name=bronze
pack_description='1000 newsletters'
pack_duration_days=30
pack_cost=9.9$

如果用户激活了包

user= User.objects.get(username='suhail')
pack= avail_packs.objects.get(pack_name=bronze)
activation_date= 27-aug-2013
quantity=1

现在我的问题是我想在日期26-sep-2013选择包中的项目吗?

我是否需要删除该项目(从today-activation_date>29所在的selected_pa​​cks中删除项目。

如果我想删除该项,那么如何?

我是否需要运行一个cron(django celery)并每天检查以删除这些项目。

或者我需要在用户点击新信息(或一些可填写的项目)时删除该项目

我正在使用paypal所以有没有任何方法在paypal中做这些类型的每月订阅?

1 个答案:

答案 0 :(得分:1)

为这么简单的任务运行芹菜是超大的。看看django management commands并每晚运行一个cronjob来停用/删除包。

from optparse import make_option

class Command(BaseCommand):
    option_list = BaseCommand.option_list + (
        make_option('--delete',
            action='store_true',
            dest='delete',
            default=False,
            help='Delete inactive packages'),
        )

    def handle(self, *args, **options):

        if options['delete']:
            selected_packs.objects.filter(activation_date__lt=timeframe).delete()
相关问题