记录项目的框架、数据表设计、项目框架等通用内容
仅作为个人笔记!
目录
1.总体设计
1.1. 项目架构
1.2.数据表设计
数据表一定要充分考虑,设计好,不能中途改动,设计模型类的更改很麻烦
- 一个用户可以添加多个地址,一对多的关系,地址可以独立为一个地址表。
- 一个商品可能有多个图片,需要商品图片表;
- 类似的还有一个订单对应多个商品,需要创建订单商品表...
- *表示根据需求决定是否需要该字段
1.3.模型类设计
模型类设计:模型类设计之前一定要分析设计好表,一旦开始就不要再改动了。
(1)在自己的抽象模型类设计中,设计一个模型类的抽象基类BaseModel,记录创建时间、更新时间、删除标记 。每个类继承之。(在元类中说明是抽象模型类)
(2)在用户模块中,按数据库设计,先设计相应的模型类:
注:外键需要两个位置参数,一个是关联的模型(被关联的类)和 on_delete
选项。在Django2.0版本后, on_delete
选项为必填。
from django.db import models
from django.contrib.auth.models import AbstractUser # 从auth用户验证模块中导入AbstractUser
from db.base_model import BaseModel
# Create your models here.
class User(AbstractUser, BaseModel):
"""用户模型类"""
class Meta:
db_table = 'df_user'
verbose_name = '用户'
verbose_name_plural = verbose_name
class Address(BaseModel):
"""地址模型类"""
user = models.ForeignKey('User', verbose_name='所属账户', on_delete=models.CASCADE,)
receiver = models.CharField(max_length=20, verbose_name='收件人')
addr = models.CharField(max_length=256, verbose_name='收件地址')
zip_code = models.CharField(max_length=6, null=True, verbose_name='邮政编码')
phone = models.CharField(max_length=11, verbose_name='联系电话')
is_default = models.BooleanField(default=False, verbose_name='是否默认')
class Meta:
db_table = 'df_address'
verbose_name = '地址'
verbose_name_plural = verbose_name
(3)商品模块模型类
from django.db import models
from db.base_model import BaseModel
from tinymce.models import HTMLField # 用富文本类型,需要配置app、默认配置和urls
# Create your models here.
class GoodsType(BaseModel):
'''商品类型模型类'''
name = models.CharField(max_length=20, verbose_name=