【问题标题】:user Checkout and guest checkout: best way to use both in Django用户结帐和访客结帐:在 Django 中使用两者的最佳方式
【发布时间】:2020-03-18 08:25:34
【问题描述】:

实际上,我需要有关处理客人结帐和客户结帐的最佳做法的建议。 我有一个场景,1 个订单可以有多个产品(这不是问题)。我的订单表是这样的

class Orders(models.Model):
    customer= models.ForeignKey(Customer, on_delete=models.CASCADE)
    order_number = models.AutoField(primary_key=True)
    total_amount = models.DecimalField(max_digits=10, decimal_places=2)
    ordertime = models.DateTimeField(auto_now_add=True)
    order_status = models.CharField(max_length=50)
    is_placed = models.BooleanField(default=False)

然后像这样链接到产品表

class OrderProduct(models.Model):
    order=models.ForeignKey(Orders, on_delete=models.CASCADE)
    activity = models.ForeignKey(ActivityOrganizer, on_delete=models.CASCADE)
    participants=models.IntegerField(default=0)
    totalPrice=models.DecimalField(max_digits=10, decimal_places=2)
    checkIn = models.DateField()
    language = models.CharField(max_length=50, null=False, blank=False)

我的客户表是

class Customer(models.Model):
    customerProfile = models.OneToOneField(User, on_delete=models.CASCADE)
    first_name=models.CharField(max_length=50, null=False, blank=False)
    last_name=models.CharField(max_length=50, null=False, blank=False)
    email=models.CharField(max_length=50, null=False, blank=False)
    mobile_number=models.CharField(max_length=50, null=False, blank=False)
    profile_image=models.ImageField(null=True, upload_to='CustomerProfile')
    is_customer=models.BooleanField(default=False)
    city=models.CharField(max_length=50, null=True, blank=True)
    gender=models.CharField(max_length=50, null=True, blank=True)
    verification_key = models.CharField(max_length=100, null=True, blank=True)
    def __str__(self):
        return str(self.first_name)

现在我也想启用访客结帐。那么我应该通过允许 Foregin 键 Null 来使用现有的订单表吗?或者我应该为此制作单独的订单表?最好的方法是什么?

【问题讨论】:

  • 在客人结账期间,您是否收集任何将进入客户模型的信息?
  • @schillingt 是 first_name , last_name , email , phone 等

标签: python django database django-models


【解决方案1】:

根据您提供的信息,我会将 Customer.customerProfile 设为可空,并将其设置为 None 以供客人结帐。

【讨论】:

  • 所以不需要为客人订单创建新模型?
  • 请您验证设计和逻辑明智我的设计好吗?
  • 不,应该不需要新型号。
  • 我对需要在哪里进行更改感到困惑?在客户表中?你可以发布编辑过的代码吗? @schilligt
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-13
  • 1970-01-01
  • 2018-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多