【问题标题】:Why doesn't Django generate references for foreign keys to models from other apps?为什么 Django 不为来自其他应用程序的模型生成外键引用?
【发布时间】:2013-04-08 14:00:59
【问题描述】:

我有一个名为 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 时,它不会为 user_id 显示 REFERENCES。为什么不呢?

$ 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 时也不会发生这种情况,当应用程序位于同一个项目中时也不会发生这种情况。

【问题讨论】:

    标签: python sql django


    【解决方案1】:

    它不能在创建时执行此操作,因为如果您只是打印门票应用程序的 SQL,它不能保证已创建身份验证表。因此,它在最后分别执行它们 - 但sql 不打印索引,sqlindexes 可以。

    【讨论】:

      猜你喜欢
      • 2015-06-04
      • 2019-03-19
      • 2016-06-18
      • 2018-02-04
      • 1970-01-01
      • 2017-02-08
      • 2012-10-31
      • 2011-08-24
      • 2010-10-21
      相关资源
      最近更新 更多