zoukankan      html  css  js  c++  java
  • django -- verbose_name的对数据库层面的影响

    一、没有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

      对数据库层面没影响。

    ----

  • 相关阅读:
    【资料分享】 OpenCV精华收藏 续
    【收藏+原创】商业网站
    【图像算法】彩色图像分割专题五:提取彩色图像上特定色彩
    【图像算法】彩色图像分割专题四:测试图片的生成
    【My Project】织物疵点检测机器视觉系统 平台二
    【资料收藏】HQU校内免费资源
    七八
    【music】Give me some sunshine
    【图像算法】彩色图像分割专题六:一种基于颜色直方图的图像分割
    【图像算法】彩色图像分割专题二:显示屏幕上任意点颜色值
  • 原文地址:https://www.cnblogs.com/JiangLe/p/7920214.html
Copyright © 2011-2022 走看看