【发布时间】:2020-12-08 11:08:08
【问题描述】:
Hlw,我正在开发一个 Djang0 2.2.15 项目,我使用 allauth 设置我的用户帐户,我使用了一个名为 def cartData(request): in utils.py 的函数,我在 views.py 函数中调用了该函数,
def cartData(request):
if request.user.is_authenticated:
customer = request.user.customer
order, created =
Order.objects.get_or_create(customer=customer,
complete=False)
items = order.orderitem_set.all()
cartItems = order.get_cart_items
else:
cookieData = cookieCart(request)
cartItems = cookieData['cartItems']
order = cookieData['order']
items = cookieData['items']
return {'cartItems':cartItems ,'order':order, 'items':items}
在models.py中,我与用户使用onetoone关系的类是,
from django.db import models
from django.conf import settings
from django.urls import reverse
from django.contrib.auth import get_user_model
class Customer(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL, null=True,
blank=True, on_delete=models.CASCADE)
name = models.CharField(max_length=200, null=True)
email = models.CharField(max_length=200)
def __str__(self):
return self.name
但是每当我运行我的项目时,我都会在控制台上发现这个错误,
users.models.CustomUser.customer.RelatedObjectDoesNotExist: CustomUser
has no customer.
浏览器中的错误信息截图如下,
Browser error message Browser error message
我从中创建用户的forms.py,代码如下
class CustomUserCreationForm(UserCreationForm):
class Meta:
model = get_user_model()
fields = ('email', 'username',)
类 CustomUserChangeForm(UserChangeForm):
class Meta:
model = get_user_model()
fields = ('email', 'username',)
users/views.py的代码如下,
from django.views import generic
from .forms import CustomUserCreationForm
class SignupPageView(generic.CreateView):
form_class = CustomUserCreationForm
success_url = reverse_lazy('login')
template_name = 'signup.html'
【问题讨论】:
-
很明显,当您创建 User 对象时,并未创建 Customer 实例。更好地检查您的信号/表单(您通过它创建了客户实例)
-
我更新了我的问题并添加了一个表单,py 代码,我从中创建了一个用户,你能建议我创建一个客户实例吗
标签: django django-models django-forms django-views django-allauth