【发布时间】:2021-06-03 12:31:52
【问题描述】:
我正在尝试配置 Django Stripe 订阅。
现在尝试通过以下代码设置 webhook 以创建新的客户数据。
views.py
import stripe
from django.conf import settings
from django.contrib.auth.models import User
from subscriptions.models import StripeCustomer
@csrf_exempt
def stripe_webhook(request)
...
#Get the user and create a new StripeCustomer
user = settings.AUTH_USER_MODEL.objects.get(id=client_reference_id)
StripeCustomer.objects.create(
user=user,
stripeCustomerId=stripe_customer_id,
stripeSubscriptionId=stripe_subscription_id,
)
print(user.username + ' just subscribed.')
回溯和错误信息如下。
Traceback(最近一次调用最后一次):文件 “/home/app_admin/venv_ruling/ruling/subscriptions/views.py”,第 125 行, 在 stripe_webhook 中
用户 = settings.AUTH_USER_MODEL.objects.get(id=client_reference_id) AttributeError: 'str' 对象没有属性 'objects'
我正在按照本手册创建此应用程序https://testdriven.io/blog/django-stripe-subscriptions/
手册指定下面的代码。
user = User.objects.get(id=client_reference_id)
但我使用的是“自定义用户模型”。所以我把上面的代码改成下面的
user = settings.AUTH_USER_MODEL.objects.get(id=client_reference_id)
以下是其他代码。
我的models.py
从 django.conf 导入设置 从 django.db 导入模型
class StripeCustomer(models.Model):
user = models.OneToOneField(to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
stripeCustomerId = models.CharField(max_length=255)
stripeSubscriptionId = models.CharField(max_length=255)
def __str__(self):
return self.user.username
accounts/models.py
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
class Meta:
verbose_name_plural = 'CustomUser'
我的设置.py
#used for django-allauth
AUTH_USER_MODEL = 'accounts.CustomUser'
我刚刚在此问题中提到了上述设置,但如果需要更多代码,请告诉我,我将使用该信息更新我的问题。谢谢
【问题讨论】:
-
这似乎与 stripe-python 无关,并且与您之前的问题重复。
-
@Nolan H 这段代码是“webhook”的stripe函数的一部分,内容与之前的略有不同。之前的问题没有得到答案,但新问题得到了适当的答案,因为我修改了它。
标签: python django django-models django-rest-framework