博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django -- verbose_name的对数据库层面的影响
阅读量:5840 次
发布时间:2019-06-18

本文共 2329 字,大约阅读时间需要 7 分钟。

一、没有verbose_name时model的定义:

from django.db import models# Create your models here.class Question(models.Model):    question_text = models.CharField(max_length=128)class Answer(models.Model):    question = models.ForeignKey(Question)    answer_text = models.CharField(max_length=128)

 

二、对应的SQL:

BEGIN;---- Create model Answer--CREATE TABLE "polls_answer" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "answer_text" varchar(128) NOT NULL);---- Create model Question--CREATE TABLE "polls_question" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "question_text" varchar(128) NOT NULL);---- Add field question to answer--ALTER TABLE "polls_answer" RENAME TO "polls_answer__old";CREATE TABLE "polls_answer" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "answer_text" varchar(128) NOT NULL, "question_id" integer NOT NULL REFERENCES "polls_question" ("id"));INSERT INTO "polls_answer" ("id", "answer_text", "question_id") SELECT "id", "answer_text", NULL FROM "polls_answer__old";DROP TABLE "polls_answer__old";CREATE INDEX "polls_answer_question_id_d45b3e6d" ON "polls_answer" ("question_id");COMMIT;

 

三、带有verbose_name的model定义:

from django.db import models# Create your models here.class Question(models.Model):    question_text = models.CharField(max_length=128)class Answer(models.Model):    question = models.ForeignKey(Question,verbose_name="related question id")    answer_text = models.CharField(max_length=128)

 

四、对应SQL层的代码:

BEGIN;---- Create model Answer--CREATE TABLE "polls_answer" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "answer_text" varchar(128) NOT NULL);---- Create model Question--CREATE TABLE "polls_question" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "question_text" varchar(128) NOT NULL);---- Add field question to answer--ALTER TABLE "polls_answer" RENAME TO "polls_answer__old";CREATE TABLE "polls_answer" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "answer_text" varchar(128) NOT NULL, "question_id" integer NOT NULL REFERENCES "polls_question" ("id"));INSERT INTO "polls_answer" ("id", "answer_text", "question_id") SELECT "id", "answer_text", NULL FROM "polls_answer__old";DROP TABLE "polls_answer__old";CREATE INDEX "polls_answer_question_id_d45b3e6d" ON "polls_answer" ("question_id");COMMIT;

 

 

五、总结:

  由上面的两组代码可以看出verbose_name 在SQL层面没有具体的体现、也就是说加不加verbose_name

  对数据库层面没影响。

 

 

 

 

----

转载地址:http://zktcx.baihongyu.com/

你可能感兴趣的文章
VMWare网络设置的3中方式(转)
查看>>
支付这条线上 谁在赚钱谁在哭?
查看>>
机器学习之朴素贝叶斯分类
查看>>
亚信安全参加第六届全国等保技术大会 态势感知助力“等保2.0”落地
查看>>
【设计模式系列】--抽象工厂
查看>>
JqueryValidate 动态添加验证
查看>>
双活数据中心的架构
查看>>
大数据公司Palantir融得7亿美元 曾追踪拉登
查看>>
先行者长虹佳华超融合市场沙龙在京举行
查看>>
建立备份策略的重要性
查看>>
小白用户如何轻松上云 -我的轻量应用服务器探索记
查看>>
BCG与阿里研究院等联合揭秘中国互联网经济:成功的关键是什么?
查看>>
Palo Alto Networks推出业内首个防凭证被盗及滥用技术
查看>>
发力IoT领域 Marvell注重生态系统发展
查看>>
数据中心网络布线工程必备七大件
查看>>
20个问题揭穿冒牌数据科学家
查看>>
从宏杉合作伙伴大会看本土存储厂商的“逆袭”
查看>>
你应该知道的 RPC 原理
查看>>
Ubuntu安装词典
查看>>
KVM虚拟机在线添加网卡
查看>>