Menu
×
   ❮   
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 中,数据是在称为模型的对象中创建的,实际上是数据库中的表格。


创建表格(模型)

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

打开它,并通过创建一个 Member class 来添加 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

这将导致以下输出

针对 'members' 的迁移
  members\migrations\0001_initial.py
    - 创建模型 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 语句并执行它。

运行迁移命令

py manage.py migrate

这将导致以下输出

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

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

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


查看 SQL

作为旁注:您可以查看从上述迁移执行的 SQL 语句。您只需运行以下命令,其中包含迁移编号

py manage.py sqlmigrate members 0001

这将导致以下输出

BEGIN;
--
-- 创建模型 Member
--
CREATE TABLE "members_member" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "firstname" varchar(255) NOT NULL, "lastname" varchar(255) NOT NULL); COMMIT;


×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.