为什么Django不为其他应用程序的模型生成外键引用?

时间:2013-04-08 14:00:59

标签: python sql django

我有一个名为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时,或者当应用程序在同一个项目中时,也不会发生这种情况。

1 个答案:

答案 0 :(得分:2)

它不能在创建时执行此操作,因为如果您只是为票证应用程序打印SQL,则无法保证已创建auth表。因此,它最后会单独执行 - 但sql不会打印索引,sqlindexes会这样做。