允许用户使用Django Stripe(dj Stripe)仅使用非付费帐户创建一定数量的对象

允许用户使用Django Stripe(dj Stripe)仅使用非付费帐户创建一定数量的对象,django,django-models,django-templates,django-views,Django,Django Models,Django Templates,Django Views,我目前有一个个人CRM应用程序,允许用户创建联系人,然后为这些联系人创建日志。下面是代码的样子 视图.py class CreateContact(LoginRequiredMixin,CreateView): 型号=触点 模板名称='network/contacts\u list.html' form_class=ContactForm def get_success_url(自我): 返回反向('主') def表单_有效(自身、表单): form.instance.contact_owner

我目前有一个个人CRM应用程序,允许用户创建联系人,然后为这些联系人创建日志。下面是代码的样子

视图.py

class CreateContact(LoginRequiredMixin,CreateView):
型号=触点
模板名称='network/contacts\u list.html'
form_class=ContactForm
def get_success_url(自我):
返回反向('主')
def表单_有效(自身、表单):
form.instance.contact_owner=self.request.user
返回super(CreateContact,self).form\u有效(form)
def获取上下文数据(自身,**kwargs):
context=super(CreateContact,self)。获取上下文数据(**kwargs)
上下文['contacts']=Contact.objects.filter(Contact\u owner=self.request.user)
返回上下文
类CreateContactLog(LoginRequiredMixin,CreateView):
型号=通讯录
模板名称='network/contact\u detail.html'
字段=('log_type','body',)
def get_success_url(自我):
返回反向('contact-detail',kwargs={'id':self.kwargs['id']})
def表单_有效(自身、表单):
当前联系人=contact.objects.get(contact\u owner=self.request.user,contact\u id=self.kwargs['id'])
form.instance.contact_owner=self.request.user
form.instance.contact_id=当前_联系人
返回super(CreateContactLog,self)。表单_有效(表单)
def获取上下文数据(自身,**kwargs):
当前联系人=contact.objects.get(contact\u owner=self.request.user,contact\u id=self.kwargs['id'])
context=super(CreateContactLog,self)。获取上下文数据(**kwargs)
上下文[“联系人信息”]=当前联系人
上下文[“名字”]=当前联系人。名字
上下文[“id”]=当前联系人。联系人id
上下文['log\u entries']=ContactLog.objects.filter(contact\u owner=self.request.user,contact\u id=current\u contact)
返回上下文
一切都很顺利

现在我想开始接受付款,我想将我的应用程序与Stripe集成。最好的方法是使用第三方软件包

我想有两个计划,免费和付费。我想允许免费计划用户创建最多10个联系人。在阅读django stripe的文档时,我发现我可以使用基于类的视图,但我不明白如何限制一定数量的对象创建

以下是我目前的想法:

  • 也许创建两个类,其中一个类允许创建三个对象,另一个类允许无限,但需要付款

  • 也许我错过了一个可以帮助解决这个问题的环境

解决此问题的最佳方法是什么?

如果你需要更多信息,请告诉我

事先非常感谢

最好的,
Rasul

我将创建一个util函数,用于检查:

  • 一个用户有多少个联系人
  • 用户是否有付费计划
  • 检查1是对
    联系人_owner
    上的反向关系的直接计数

    dj stripe提供了您可以在检查2中使用的功能和方法

    然后,您可以在
    表单\u valid
    中检查此util的结果。如果结果为false,则可以调用
    form\u invalid

    希望有帮助

    亚历克斯