django -- verbose_name的对数据库层面的影响
2017-11-29 14:09
281 查看
一、没有verbose_name时model的定义:
二、对应的SQL:
三、带有verbose_name的model定义:
四、对应SQL层的代码:
五、总结:
由上面的两组代码可以看出verbose_name 在SQL层面没有具体的体现、也就是说加不加verbose_name
对数据库层面没影响。
----
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
对数据库层面没影响。
----
相关文章推荐
- Django如何从Model中获取字段名称——verbose_name
- django中manytomanyfield 因为verbose_name导致filter_horizontal不显示的问题。
- 将DJANGO 中MODELS数据转化为JSON数据(name,verbose_name,value)方法
- 获取Django中model字段名 字段的verbose_name
- (转载)获取Django中model字段名 字段的verbose_name
- 获取Django model中字段名,字段的verbose_name,字段类型
- django verbose_name中文解码出错
- django models使用verbose_name报错
- Django数据库操作中You are trying to add a non-nullable field 'name' to contact without a default错误处理
- Django模板获取field的verbose_name
- django “如何”系列9:三合一:利用遗留的数据库、输出csv和输出pdf
- 数据库练习(二)三个数据库根据指定id获取name和存储数据库名称
- Sqlserver 因断电,数据库 "DatabaseName" 被标记为 [Suspect]
- Django 数据库错误
- Django使用多数据库multiple databases笔记
- 影响数据库性能的因素
- Running migrations: No migrations to apply.(django不能创建数据库中的表的问题)
- 我的django之旅(三)数据库和模型
- Hekaton是如何影响你数据库的目标恢复时间(RTO)的
- Django-数据库操作