我正在创建一个网站,用户可以订阅一个月的套餐(与简报订阅5美元/月相同)。我该如何管理这些订阅包。我是否需要在到期日后永久删除该项目?什么是最好的方法。
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_packs中删除项目。
我是否需要运行一个cron(django celery
)并每天检查以删除这些项目。
或者我需要在用户点击新信息(或一些可填写的项目)时删除该项目
答案 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()