django-mysql配置

django-mysql配置

数据库设置

DATABASES = {
    # 'default': {
    #     'ENGINE': 'django.db.backends.sqlite3',
    #     'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    # }
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test2',
        'USER': 'root',
        'PASSWORD': 'mysql',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

常见类型

  • ForeignKey
  • 文本类型 TextField CharField
  • 数字类型, FloatField,DecimalField,IntegerField
  • Boolean类型
  • 时间类型 DateTime, TimeField, DateTimeField

重写Manager类

在models中 有Manager管理类. 默认情况下 objetcs = models.Manage()

由此可以调用BookInfo.objects.all()

如果想更改名字books = models.Manager() (这个写在BookInfo这个类中)
调用时候BookInfo.books.all()

然而这么做没有任何意义

我们可以继承这个类给这个类增加方法

class BookManager(models.Manager):
    def get_queryset(self):
    return super(BookManager, self).get_queryset().filter(isDelete=False)

以后再调用book查询时候就过滤了isDelete=True的数据, 做到了逻辑删除

我们还可以,增加快速创建方法。self.Model()总是指向了调用者的类, BookInfo.objects.all()此时, self.Model = BookInfo

自定义表名

一般表明就是 app名_类名

如果不想要这个表明, 可以在类中 写入原类的代码来修改这个表名

class BookInfo(models.Model):
    字段 = 类型
    class Meta():
        //bookinfo 是自定义表明
        db_table = 'bookinfo'

        //数据id降 序 排列
        ordering = ['-id']

Django-query API 访问官网

F函数可以把自己的字段提取为数值 Q可以提取单个条件 可以进行 或操作和 与操作

filter(Q()|Q())

自连接

结构很相似, 所以我们的外键可以是自己的主键。

简化了表的结构

我们的代码可以这么写,在创建models的时候

class AreaInfo(models.Model):
    atitle = models.CharField(max_length=20)

    //aParent_id是一个外键 是自己的主键 不能为空
    aParent = models.ForeignKey('self', null=True, blank=True)

    class Meta():
        db_table = 'areainfo'

```

本文总阅读量