定义QQ登录模型类

1. 定义模型类基类

meiduo_mall.utils/models.py文件中创建模型类基类。

  • 用于增加数据新建时间和更新时间。
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="更新时间")

    class Meta:
        abstract = True  # 说明是抽象模型类, 用于继承使用,数据库迁移时不会创建BaseModel的表

上面代码中相关参数解读:

auto_now_add:创建或添加对象时自动添加时间, 修改或更新对象时, 不会更改时间

auto_now:凡是对对象进行操作(创建/添加/修改/更新),时间都会随之改变

abstract:声明该模型类仅继承使用,数据库迁移时不会创建 BaseModel 的表

2. 定义QQ登录模型类

创建一个新的应用oauth,用来实现QQ第三方认证登录。

设置路由

path('', include('apps.oauth.urls')),
from django.conf.urls import url
from . import views
urlpatterns = [

]

oauth/models.py中定义QQ身份(openid)与用户模型类User的关联关系

from django.db import models
from utils.models import BaseModel

class OAuthQQUser(BaseModel):
    """QQ登录用户数据"""
    user = models.ForeignKey('users.User', on_delete=models.CASCADE, verbose_name='用户')
    openid = models.CharField(max_length=64, verbose_name='openid', db_index=True)

    class Meta:
        db_table = 'tb_oauth_qq'
        verbose_name = 'QQ登录用户数据'
        verbose_name_plural = verbose_name

3. 迁移QQ登录模型类

python manage.py makemigrations
python manage.py migrate