欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

完整电商项目--(五)用户基本信息(2):收货地址

程序员文章站 2024-03-25 22:37:34
...

业务分析(纯业务逻辑分析,增删改查我们就不讲代码实现,主要是学习电商设计)

  • 这一部分可以参考一般的电商网站做
    完整电商项目--(五)用户基本信息(2):收货地址
class Address(BaseModel):
    """用户地址"""
    user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='addresses', verbose_name='用户')
    title = models.CharField(max_length=20, verbose_name='地址名称')
    receiver = models.CharField(max_length=20, verbose_name='收货人')
    province = models.ForeignKey('areas.Area', on_delete=models.PROTECT, related_name='province_addresses', verbose_name='省')
    city = models.ForeignKey('areas.Area', on_delete=models.PROTECT, related_name='city_addresses', verbose_name='市')
    district = models.ForeignKey('areas.Area', on_delete=models.PROTECT, related_name='district_addresses', verbose_name='区')
    place = models.CharField(max_length=50, verbose_name='地址')
    mobile = models.CharField(max_length=11, verbose_name='手机')
    tel = models.CharField(max_length=20, null=True, blank=True, default='', verbose_name='固定电话')
    email = models.CharField(max_length=30, null=True, blank=True, default='', verbose_name='电子邮箱')
    is_deleted = models.BooleanField(default=False, verbose_name='逻辑删除')

    class Meta:
        db_table = 'tb_address'
        verbose_name = '用户地址'
        verbose_name_plural = verbose_name
        ordering = ['-update_time']
  • Address模型类中的外键指向areas/models里面的Area。指明外键时,可以使用应用名.模型类名来定义。
  • ordering 表示在进行Address查询时,默认使用的排序方式。
  • ordering = [’-update_time’] : 根据更新的时间倒序。

(1)收货地址及默认收货地址

  • (1)定义地址模型类,参考上面的字段。注意:一个用户有多个收货地址,所以我们需要 定义一个字段,关联 user模型类。

  • (2) 另外需要一个 默认收货地址, 我们在user中 新加入一个 default_address 字段。用它来指定用户的默认收货地址

  • 业务(1) 需要用户手动设置默认地址的接口。

  • 业务(2)需要能对已有接口进行增删改查的接口(一般采用逻辑删除)

  • 业务(3)需要有新增用户地址的接口(如上述图片),并且限制,每个用户最多填写20个地址。
    完整电商项目--(五)用户基本信息(2):收货地址
    都是一些增删改查的操作,这里就不多介绍了~

另外在地址搜索的时候有一个地址的 三级联动:
  • 这个大部分是由前端做的。我们只需要传递两个接口。 一个用用来获取省的数据, 一个用来获取市, 区的数据。
  • 数据表当然是用一个表存储的,自关联。

好了~ 介绍的太笼统了~ 不过就是基本的增删改查逻辑。实现的是比较简单的地址功能,就这些吧

over!