django-post_保存-订单匹配查询不存在错误

django-post_保存-订单匹配查询不存在错误,django,forms,view,Django,Forms,View,创建配置文件模型时,创建愿望列表模型的实例和订单模型的实例;注册用户时,创建配置文件模型的实例,如下所示: 用户注册->用户->配置文件->愿望列表和订单 在这一系列的创作中,我认为“post_save”信号是最好的,代码如下: #在创建用户时创建配置文件 @接收方(post_save,发送方=用户,dispatch_uid=“create_User_profile”) def create_配置文件(发送方、实例、已创建、**kwargs): user\u profile,created=pr

创建
配置文件
模型时,创建
愿望列表
模型的实例和
订单
模型的实例;注册
用户
时,创建
配置文件
模型的实例,如下所示:

用户注册->
用户
->
配置文件
->
愿望列表
订单

在这一系列的创作中,我认为“post_save”信号是最好的,代码如下:

#在创建用户时创建配置文件
@接收方(post_save,发送方=用户,dispatch_uid=“create_User_profile”)
def create_配置文件(发送方、实例、已创建、**kwargs):
user\u profile,created=profile.objects.get\u或\u create(user=instance)
如果创建:
用户_profile.save()
@接收方(post\u save,sender=Profile,dispatch\u uid=“创建用户愿望列表”)
def create_WITH_list(发送方、实例、已创建、**kwargs):
用户\u愿望\u列表,created=WishList.objects.get\u或\u create(profile=instance)
用户\愿望\列表。保存()
#在创建配置文件时创建购物袋/订单
@接收方(保存后,发送方=配置文件,发送uid=“创建配置文件\订单”)
def create_profile_顺序(发送方、实例、已创建、**kwargs):
如果不是Order.objects.get(profile=instance,is_ordered=False):
profile\u order,created=order.objects.get\u或\u create(
profile=实例,
ref_number=“{}的购物袋”。格式(instance.user.username),
)
profile_order.save()
根据他们自己的应用程序(
users
app:
Profile
model;
wishlist
app:
wishlist
model;
shopping
app:
Order
model),他们最初在三个不同的目录中,当注册用户登录时,他们工作正常,例如,我在整个概要文件的开头创建了一个超级用户。但是,当新用户注册时,在提交
注册表单
后,会发生以下错误:

订单匹配查询不存在

view.py

def寄存器视图(请求):
next=request.GET.GET('next')
form=UserRegisterForm(request.POST或None)
如果form.is_有效():
new_user=form.save(commit=False)
password=form.cleaned_data.get('password2'))
新用户。设置密码(密码)
新建_user.save()
用户=验证(用户名=新用户。用户名,密码=密码)
登录(请求、用户)
如果下一步:
返回重定向(下一个)
返回重定向(“/”)
返回呈现(请求'registration/register.html',{'form':form})
form.py:


类UserRegisterForm(forms.ModelForm):
password1=forms.CharField(
标签=((“Пааааа”),
strip=False,
widget=forms.PasswordInput
)
password2=forms.CharField(
标签=((“Пжжжжааа”),
strip=False,
widget=forms.PasswordInput,
帮助文本=u(“ааааааз”)
)
类元:
模型=用户
字段=['username'、'password1'、'password2'、]
def清洁(自身,*args,**kwargs):
password1=self.cleaned\u data.get('password1'))
password2=self.cleaned\u data.get('password2')
如果password1和password2以及password1!=密码2:
提出表格。验证错误('
return super().clean(*args,**kwargs)

如果不是Order.objects.get(profile=instance,is\u ordered=False)
语句错误。因为get()方法在对象不存在时引发模型不存在异常,所以您可以使用
而不是get()查询