微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我的信息没有从数据库中显示出来

如何解决为什么我的信息没有从数据库中显示出来

我需要帮助解决我的项目中的数据库问题。问题在于将带有附加配置文件的订单保存到数据库中。它不会将用户保存到订单中,因此有时订单是半空的,当您尝试显示用户的所有订单时,您会得到一个空列表。

这是我的代码

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 举报,一经查实,本站将立刻删除。