Django创建模型

本文介绍了在Django框架中如何创建模型,包括Question和Choice两个模型的详细设计。Question模型包含问题描述和发布时间,而Choice模型包含选项描述和投票数。Django通过makemigrations命令跟踪模型变化,并使用migrations来存储和应用这些更改到数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在Django中写一个数据库驱动的Web应用的第一步是定义模型,这是数据库结构设计和附加的其他元数据。
在投票应用中,将创建Question(问题)和Choice(选项)两个模型,Question模型包括问题描述和发布时间,Choice模型包括选项描述和当前得票数。每个选项属于一个问题。
重写polls\models.py

from django.db import models


class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')


class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

question_text、pub_date是字段名,CharField、DateTimeField是字段数据类型

修改mysite\settings.py

INSTALLED_APPS = [
    'polls.apps.PollsConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

为模型的修改生成迁移文件:

(django-env) D:\Django Projects\mysite>python manage.py makemigrations polls
Migrations for 'polls':
  polls\migrations\0001_initial.py
    - Create model Question
    - Create model Choice

通过运行makemigrations命令,Django会检测对模型的修改并将修改的部分储存为一次迁移。migrations(迁移)是Django对于模型定义(数据库结构)的变化的储存形式。

查看模型修改对应的SQL语句:

(django-env) D:\Django Projects\mysite>python manage.py sqlmigrate polls 0001
--
-- Create model Question
--
CREATE TABLE `polls_question` (`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `question_text` varchar(200) NOT NULL, `pub_date` datetime(6) NOT NULL);
--
-- Create model Choice
--
CREATE TABLE `polls_choice` (`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, `choice_text` varchar(200) NOT NULL, `votes` integer NOT NULL, `question_id` integer NOT NULL);
ALTER TABLE `polls_choice` ADD CONSTRAINT `polls_choice_question_id_c5b4b260_fk_polls_question_id` FOREIGN KEY (`question_id`) REFERENCES `polls_question` (`id`);

应用数据库迁移:

(django-env) D:\Django Projects\mysite>python manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, polls, sessions
Running migrations:
  Applying polls.0001_initial... OK
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值