如何解决为什么我的信息没有从数据库中显示出来
我需要帮助解决我的项目中的数据库问题。问题在于将带有附加配置文件的订单保存到数据库中。它不会将用户保存到订单中,因此有时订单是半空的,当您尝试显示用户的所有订单时,您会得到一个空列表。
这是我的代码。
def checkout_success(request,order_number):
save_info = request.session.get('save_info')
order = get_object_or_404(Order,order_number=order_number)
print("Order",order)
profile = UserProfile.objects.get(user=request.user)
print(profile)
# Attach the user's profile to the order
order.user_profile = profile
order.save()
print(order.user_profile)
# Save the user's info
if save_info:
profile_data = {
'default_phone': order.phone,'default_billingCountry': order.billingCountry,'default_billingPostcode': order.billingPostcode,'default_billingCity': order.billingCity,'default_billingAdress1': order.billingAdress1
}
user_profile_form = UserProfileForm(profile_data,instance=profile)
print("UPF",user_profile_form)
if user_profile_form.is_valid():
print("UPF Valid")
user_profile_form.save()
messages.success(request,f'Order successfully processed! \
Your order number is {order_number}. A confirmation \
email will be sent to {order.emailAddress}.')
if 'cart' in request.session:
del request.session['cart']
template = 'checkout/checkout_success.html'
context = {
'order': order,}
return render(request,template,context)
这里是 Order 和 profie 模型
# Model: Order
class Order(models.Model):
order_number = models.CharField(max_length=35,null=False,editable=False)
user_profile = models.ForeignKey(UserProfile,on_delete=models.SET_NULL,null=True,blank=True,related_name='orders') # noqa:501
billingName = models.CharField(max_length=250,blank=True)
emailAddress = models.EmailField(max_length=250,verbose_name='Email Adress') # noqa:501
phone = models.CharField(max_length=15,default=0)
billingCountry = CountryField(blank_label='Country *',blank=False) # noqa:501
billingPostcode = models.CharField(max_length=250,blank=True)
billingCity = models.CharField(max_length=250,blank=True)
billingAdress1 = models.CharField(max_length=250,blank=True)
shippingName = models.CharField(max_length=250,blank=True)
shippingAddress1 = models.CharField(max_length=250,blank=True)
shippingCity = models.CharField(max_length=250,blank=True)
shippingPostcode = models.CharField(max_length=250,blank=True)
shippingCountry = CountryField(blank_label='Country *',blank=False) # noqa:501
created = models.DateTimeField(auto_Now_add=True)
delivery_cost = models.DecimalField(max_digits=8,decimal_places=2,default=0) # noqa:501
total = models.DecimalField(max_digits=10,verbose_name='USD Order Total') # noqa:501
grand_total = models.DecimalField(max_digits=8,default=0) # noqa:501
original_cart = models.TextField(null=False,blank=False,default='')
stripe_pid = models.CharField(max_length=254,default='') # noqa:501
def _generate_order_number(self):
return uuid.uuid4().hex.upper()
def update_total(self):
self.total = self.lineitems.aggregate(Sum('lineitem_total'))
['lineitem_total__sum'] or 0
if self.total < settings.FREE_DELIVERY_THRESHOLD:
self.delivery_cost = self.total *
settings.STANDARD_DELIVERY_PERCENTAGE / 100
else:
self.delivery_cost = 0
self.total = self.total + self.delivery_cost
self.save()
def save(self,*args,**kwargs):
if not self.order_number:
self.order_number = self._generate_order_number()
super().save(*args,**kwargs)
def __str__(self):
return self.order_number
and the UserProfile model
class UserProfile(models.Model):
user = models.OnetoOneField(User,on_delete=models.CASCADE)
default_phone = models.CharField(max_length=15,blank=True)
default_billingAdress1 = models.CharField(max_length=250,blank=True)
default_billingCountry = CountryField(blank_label='Country',blank=True)
default_billingPostcode = models.CharField(max_length=250,blank=True)
default_billingCity = models.CharField(max_length=250,blank=True)
def __str__(self):
return self.user.username
感谢有人能帮我看看有什么问题,谢谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。