首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Django没有为我的模型创建一个外键?

为什么Django没有为我的模型创建一个外键?
EN

Stack Overflow用户
提问于 2013-05-13 19:24:43
回答 2查看 1.1K关注 0票数 1

我的模型代码如下:

代码语言:javascript
复制
from django.db import models

# Create your models here.
class Post(models.Model):
    title = models.CharField(max_length = 30)
    text = models.CharField(max_length = 150)

class Comment(models.Model):
    text = models.CharField(max_length = 150)
    post = models.ForeignKey(Post)

正在运行

代码语言:javascript
复制
python manage.py sqlall yabe

结果:

代码语言:javascript
复制
Mac-mini:yabedjango hn$ python manage.py sqlall yabe
BEGIN;
CREATE TABLE "yabe_post" (
    "id" serial NOT NULL PRIMARY KEY,
    "title" varchar(30) NOT NULL,
    "text" varchar(150) NOT NULL
)
;
CREATE TABLE "yabe_comment" (
    "id" serial NOT NULL PRIMARY KEY,
    "text" varchar(150) NOT NULL
)
;

COMMIT;
Mac-mini:yabedjango hn$

我期望在yabe_comment中有一个外键。Python版本:

代码语言:javascript
复制
Python 2.7.4 (v2.7.4:026ee0057e2d, Apr  6 2013, 11:43:10)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

Django版本:

代码语言:javascript
复制
django-admin.py --version
1.5.1
EN

回答 2

Stack Overflow用户

发布于 2013-05-13 19:40:06

你错过了整个输出。我复制了你的模型并试过了。command:manage.py sqlall app_name的整个输出是:

代码语言:javascript
复制
BEGIN;
CREATE TABLE `head_post` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `title` varchar(30) NOT NULL,
    `text` varchar(150) NOT NULL
)
;
CREATE TABLE `head_comment` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
    `text` varchar(150) NOT NULL,
    `post_id` integer NOT NULL
)
;
ALTER TABLE `head_comment` ADD CONSTRAINT `post_id_refs_id_b2b5e564` FOREIGN KEY (`post_id`) REFERENCES `head_post` (`id`);
CREATE INDEX `head_comment_87a49a9a` ON `head_comment` (`post_id`);

COMMIT;

PS。head是我使用的应用程序名称。

票数 0
EN

Stack Overflow用户

发布于 2013-05-13 22:47:28

代码语言:javascript
复制
python manage.py sql yabe

你可以看到"post_id" integer NOT NULL REFERENCES "blog_post" ("id")

代码语言:javascript
复制
BEGIN;
CREATE TABLE "blog_post" (
    "id" integer NOT NULL PRIMARY KEY,
    "title" varchar(30) NOT NULL,
    "text" varchar(150) NOT NULL
)
;
CREATE TABLE "blog_comment" (
    "id" integer NOT NULL PRIMARY KEY,
    "text" varchar(150) NOT NULL,
    "post_id" integer NOT NULL REFERENCES "blog_post" ("id")
)
;

我想这对你有帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16520901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档