我有一个名为tickets
的Django应用程序,其中包含以下模型:
from django.db import models
class Project(models.Model):
name = models.CharField(max_length=200)
class Ticket(models.Model):
summary = models.CharField(max_length=500)
project = models.ForeignKey(Project)
user = models.ForeignKey('auth.User')
auth.User
有一个外键。但是,当我使用Django生成SQL时,它不会为REFERENCES
显示user_id
。为什么不呢?
$ python manage.py sql tickets
BEGIN;
CREATE TABLE "tickets_project" (
"id" integer NOT NULL PRIMARY KEY,
"name" varchar(200) NOT NULL
)
;
CREATE TABLE "tickets_ticket" (
"id" integer NOT NULL PRIMARY KEY,
"summary" varchar(500) NOT NULL,
"project_id" integer NOT NULL REFERENCES "tickets_project" ("id"),
"user_id" integer NOT NULL -- no references here!
)
;
COMMIT;
当我调用python manage.py sql auth tickets
时,或者当应用程序在同一个项目中时,也不会发生这种情况。
答案 0 :(得分:2)
它不能在创建时执行此操作,因为如果您只是为票证应用程序打印SQL,则无法保证已创建auth表。因此,它最后会单独执行 - 但sql
不会打印索引,sqlindexes
会这样做。