1

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

模型.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

我需要删除项目吗(从 selected_pa​​cks where 中删除项目today-activation_date>29)。

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

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

或者当用户单击newletter(或一些收费项目)时我是否需要删除该项目

我正在使用贝宝,那么贝宝中有什么方法可以进行这些类型的每月订阅吗?

4

1 回答 1

1

为这样一个简单的任务运行 celery 是超大的。看看django 管理命令,每晚运行一个 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()
于 2013-08-27T06:34:55.160 回答