gyn

Win32下的Perl,无用的select,停滞的Tk,结束吧....

对Django中sqlite数据库无法建立外键的解析

是参照《Learning Website Developing with Django》里面的django_bookmarks一例照搬照抄下来的,问题出现在学习到为bookmarks应用建立数据库表的时候。这里涉及到三张表,第一张是User,用来存储用户信息;第二张是Link,用来存储网页的url;第三张是bookmarks,用来存储书签,书签除了id和书签名之外,还有两个指向User和Link的外键。按照书里面的指示在booksmark.models里插入以下内容:

from django import models

from django.contrib.auth.models import User

class Link(models.Model):

       url = URLField(unique = True)

class Bookmarks(models.Model):

       title = CharField(maxlength = 200)

       user = ForeignKey(User)

       link = ForeignKey(Link)

之后,“manage.py syncdb”将以上程序同步到数据库中,再使用“manage.py sqlall bookmarks”查看一下数据库中关于的bookmarks的表的建立情况。实际的输出与书本上的内容有一些差异,就是对于Link建立的外键,显示的结果只是一个非Null的Integer字段,没有“references”。

这里让人奇怪的一点是,既然没有建立外键,那么这个Integer的类型是怎么决定下来的?也许一种默认行为。这样的话,就很wired和 magic了。还有一种可能就是manag.py对与数据库构成的揭示是存在bug的,也就是说事实上这个外键是已经建立了,只不过没有被显示出来而已。所以使用标准sqlite3.exe,分析数据库bookmarksdb。

sqlite3 bookmarksdb

sqlie> .schema

在得到的结果中,果不其然,有

“link_id” integer NOT NULL REFERENCES “bookmarks_link” (“id”)


posted on 2008-07-10 19:49 gyn_tadao 阅读(1455) 评论(0)  编辑 收藏 引用 所属分类: Python

只有注册用户登录后才能发表评论。
<2009年5月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

导航

统计

常用链接

留言簿(15)

随笔分类(126)

随笔档案(108)

相册

搜索

最新评论

阅读排行榜

评论排行榜