Bootstrap

完整电商项目--(五)用户基本信息(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个地址。
    在这里插入图片描述
    都是一些增删改查的操作,这里就不多介绍了~

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

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

over!

;