网站开发学习Python实现-Django的models学习-生鲜项目(6.3.2)

时间:2022-04-03 23:57:47

@

1.说明

models是django的很重要的部分,所以深入研究。

本文章的所研究项目为黑马教育python课程中的项目实战-天天生鲜项目

这里就简单的描述下,会把研究的代码放在github,多研究几个来形成自己的知识体系

2.模型类的设计

网站开发学习Python实现-Django的models学习-生鲜项目(6.3.2)

3.代码的具体实现

网站开发学习Python实现-Django的models学习-生鲜项目(6.3.2)

文件夹中只有代码的models部分

该项目中一共有4个大类:cart(购物车),goods(商品),order(订单),user(用户)

然后里面有一个db文件夹,里面放的是base_model,所有的model的通用父类

from django.db import models

class BaseModel(models.Model):
'''模型抽象基类'''
create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
update_time = models.DateTimeField(auto_now=True, verbose_name='更新时间')
is_delete = models.BooleanField(default=False, verbose_name='删除标记') class Meta:
# 说明是一个抽象模型类
abstract = True

作用:定义了三个字段,创建时间,更新时间,是否删除字段

然后通过元类的属性来说明,这一个类是一个抽象类


from django.db import models
from django.contrib.auth.models import 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
........

django中db很重要所以,db的包就在django下面,然后如果要创建一个模型,都要继承db.models下的model

第二个import是导入django.contrib.auth.models(django发行版本.认证.模型)

下的abstractuser(抽象用户),为什么要导入这个呢,因为django做得太好了,把那种通用的表都抽象整合在一起了,要的时候直接用就完事

可以看到我们定义的user表,继承了额abstractuser和basemodel(一个django自带的,一个自己定义的)

然后在user的内部类中定义db_table 也就是在数据库中建表的名称,至于verbose_name 好像就对admin后头中的显示有帮助,应该没有其他作用毕竟可以为中文,plural是复数的意思。

关于其他的都放在github上,每句都会有注释

4.详情地址

gitee:https://gitee.com/bothsavage/DjangoModleStudy.git

github:https://github.com/BOTHSAVAGE/DjangoModleStudy.git

关于作者

个人博客网站

个人GitHub地址

个人公众号:

网站开发学习Python实现-Django的models学习-生鲜项目(6.3.2)