菜单
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

Django 模型


Django 模型是数据库中的一个表。


Django 模型

到目前为止,本教程中的输出都是来自 Python 或 HTML 模板的静态数据。

现在我们将看到 Django 如何允许我们处理数据,而无需更改或上传文件。

在 Django 中,数据是通过称为模型(Models)的对象创建的,实际上它们是数据库中的表。


创建表(模型)

要创建模型,请导航到 `/members/` 文件夹中的 models.py 文件。

打开它,然后通过创建 Member 来添加一个 Member 表,并在其中描述表字段。

my_tennis_club/members/models.py:

from django.db import models

class Member(models.Model):
  firstname = models.CharField(max_length=255)
  lastname = models.CharField(max_length=255)

第一个字段 firstname 是一个文本字段,将包含会员的名字。

第二个字段 lastname 也是一个文本字段,包含会员的姓氏。

firstnamelastname 都被设置为最多可以包含 255 个字符。

SQLite 数据库

当我们创建 Django 项目时,我们得到了一个空的 SQLite 数据库。

它被创建在 my_tennis_club 的根文件夹中,文件名为 db.sqlite3

默认情况下,Django 项目中创建的所有模型都将在此数据库中作为表创建。


迁移

现在我们已经在 models.py 文件中描述了一个模型,我们必须运行一个命令来实际在数据库中创建表。

导航到 `/my_tennis_club/` 文件夹并运行此命令:

py manage.py makemigrations members

这将产生以下输出:

Migrations for 'members'
  members\migrations\0001_initial.py
    - Create model Member

(myworld) C:\Users\Your Name\myworld\my_tennis_club>

Django 创建一个描述更改的文件,并将该文件存储在 `/migrations/` 文件夹中。

my_tennis_club/members/migrations/0001_initial.py:

# Generated by Django 4.1.2 on 2022-10-27 11:14

from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Member',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('firstname', models.CharField(max_length=255)),
                ('lastname', models.CharField(max_length=255)),
            ],
        ),
    ]

请注意,Django 为您的表插入了一个 id 字段,它是一个 自动递增数字(第一个记录的值为 1,第二个记录为 2 等),这是 Django 的默认行为,您可以通过描述自己的 id 字段来覆盖它。

表尚未创建,您需要再运行一个命令,然后 Django 将基于 `/migrations/` 文件夹中新文件的内容,创建并执行一个 SQL 语句。

运行 migrate 命令

py manage.py migrate

这将产生以下输出:

要执行的操作
  应用所有迁移:admin, auth, contenttypes, members, sessions
正在运行迁移
  Applying members.0001_initial... OK

(myworld) C:\Users\Your Name\myworld\my_tennis_club>

现在您的数据库中有一个 Member 表了!


查看 SQL

顺带一提:您可以通过运行此命令(带有迁移编号)来查看上面迁移中执行的 SQL 语句。

py manage.py sqlmigrate members 0001

这将产生以下输出:

BEGIN;
--
-- Create model Member
--
CREATE TABLE "members_member" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "firstname" varchar(255) NOT NULL, "lastname" varchar(255) NOT NULL); COMMIT;


×

联系销售

如果您想将 W3Schools 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持