业务分析(纯业务逻辑分析,增删改查我们就不讲代码实现,主要是学习电商设计)
- 这一部分可以参考一般的电商网站做
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!