Django创建模型

1、根据创建好应用模块

python 复制代码
python manage.py startapp tests

2、在models文件里创建模型

python 复制代码
from django.db import models

from book.models import User


# Create your models here.
class Tests(models.Model):
    STATUS_CHOICES = (
        (0, '启用'),
        (1, '停用'),
        # 更多状态...
    )
    add_time = models.DateTimeField(auto_now_add=True, verbose_name='添加时间')
    update_time = models.DateTimeField(auto_now=True, verbose_name='更改时间')
    status = models.BooleanField(choices=STATUS_CHOICES, default=0, verbose_name='状态')
    name = models.CharField(max_length=100, verbose_name='标题')
    content = models.TextField(verbose_name='内容')
    # 会自动创建author_id字段 这是处于同一个app模块下面 null=True 允许为空
    # 一对多的关联
    author = models.ForeignKey(User, on_delete=models.CASCADE, null=True, verbose_name='作者')

    # def __str__(self):
    #     return self.name  # 自定义MainModel对象的字符串表示形式

    class Meta:
        verbose_name = '文章'
        verbose_name_plural = verbose_name

    # CASCADE: 当主表中的记录被删除时,从表中所有引用该主键的记录也会被自动删除。这是级联删除的概念,确保了数据库的完整性,避免了悬挂的外键
    # PROTECT: 当从表中存在依赖于主表的记录时,禁止删除主表中的相关记录。这可以防止意外删除会导致从表中出现悬挂外键的情况。
    # SET_NULL: 当主表中的记录被删除时,将从表中所有引用该主键的外键字段设置为NULL。但是,这要求外键字段允许NULL值。
    # SET_DEFAULT: 将外键字段设置为其默认值。这同样要求字段定义了默认值。
    # DO_NOTHING: 不采取任何行动,如果从表中有记录引用了要删除的主键,则会抛出一个完整性错误。

    #
    # 如果不是则需要加上app名称.模型
    # author = models.ForeignKey('home.User', on_delete=models.CASCADE)

    # 如果外键则是自身的话,self或者本身 Article
    # author = models.ForeignKey('self', on_delete=models.CASCADE,null=True)

    def to_dict(self):
        return {
            "id": self.id,
            "name": self.name,
            "content": self.content,
            "author": self.author.name,
            "author_id": self.author.id,
        }

3、将创建好的模型结构,生成表

python 复制代码
#运行所有的
python manage.py makemigrations
python manage.py migrate


#运行应用模块
python manage.py makemigrations tests
python manage.py migrate tests

如果报这个错了,那就意味着需要在配置文件里注册你的应用模块

再次运行该命令,则会在迁移目录下生成文件

运行命令,将迁移文件,生成表

python 复制代码
python manage.py migrate tests
相关推荐
BingoGo7 分钟前
PHP8.6 新的 RFC 提案 Context Managers 优雅管理资源生命周期
后端·php
南雨北斗29 分钟前
kotlin抽象类(与接口的区别)
后端
8***B35 分钟前
Python机器学习库Scikit-learn使用
python·机器学习·scikit-learn
sino爱学习42 分钟前
Arthas 线上常用命令速查手册:Java 诊断神器,5 分钟定位线上问题!
后端
songroom1 小时前
Rust: 量化策略回测与简易线程池构建(MPMC)
开发语言·后端·rust
绝无仅有1 小时前
面试日志elk之ES数据查询与数据同步
后端·面试·架构
码农BookSea1 小时前
用好PowerMock,轻松搞定那些让你头疼的单元测试
后端·单元测试
绝无仅有1 小时前
大场面试之最终一致性与分布式锁
后端·面试·架构
xinxingrs1 小时前
贪心算法、动态规划以及相关应用(python)
笔记·python·学习·算法·贪心算法·动态规划