【问题标题】:Stripe "webhook" error with "custom user model" (Django)使用“自定义用户模型”(Django)条纹“webhook”错误
【发布时间】:2021-08-21 09:33:36
【问题描述】:

我正在尝试配置 Django Stripe 订阅。

现在尝试通过以下代码设置 webhook 以创建新的客户数据。

views.py

import stripe
from django.conf import settings
from django.contrib.auth.models import User
from subscriptions.models import StripeCustomer  

...


# Get the user and create a new StripeCustomer
user = User.objects.get(id=client_reference_id)

StripeCustomer.objects.create(
    user=user,
    stripeCustomerId=stripe_customer_id,
    stripeSubscriptionId=stripe_subscription_id,
)

print(user.username + ' just subscribed.')

我遇到了错误

user = User.objects.get(id=client_reference_id)

因为我使用的是“自定义用户模型”。所以我把上面的代码改成

user = settings.AUTH_USER_MODEL.objects.get(id=client_reference_id)

但是,它仍然不起作用。 有没有其他写法来获取“用户数据”?

Traceback(最近一次调用最后一次):文件 “/home/app_admin/venv_ruling/ruling/subscriptions/views.py”,第 124 行, 在 stripe_webhook 用户 = settings.AUTH_USER_MODEL.objects.get(id=client_reference_id) AttributeError: 'str' 对象没有属性 'objects'

我正在按照本手册创建此应用 https://testdriven.io/blog/django-stripe-subscriptions/

以下是其他代码。

我的models.py

from django.conf import settings
from django.db import models


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'

我刚刚在此问题中提到了上述设置,但如果需要更多代码,请告诉我,我将使用该信息更新我的问题。谢谢

【问题讨论】:

  • 请将您的错误添加到您的帖子中
  • @Tom Hamilton Stubber 我看不到任何错误。它只是不执行。
  • @Tom Hamilton Stubber 我得到了 Traceback Traceback(最近一次调用最后一次):文件“/home/app_admin/venv_ruling/ruling/subscriptions/views.py”,第 124 行,在 stripe_webhook 用户 = 设置中。 AUTH_USER_MODEL.objects.get(id=client_reference_id) AttributeError: 'str' object has no attribute 'objects'
  • 您必须为您的用户模型定义objects。您是从AbstractBaseUser 继承的吗? docs.djangoproject.com/en/3.2/topics/auth/customizing/…
  • @Tom Hamilton Stubber 我继承自 models.py 中的“AbstractUser”而不是“AbstractBaseUser”

标签: python django django-models django-rest-framework


【解决方案1】:

尝试导入:

from django.contrib.auth import get_user_model

而不是使用

user = User.objects.get(id=client_reference_id)

使用以下内容:

User = get_user_model()
user = User.objects.get(id=client_reference_id)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-13
    • 2021-10-21
    • 2013-04-29
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    • 2013-12-02
    • 2021-10-27
    相关资源
    最近更新 更多