首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django没有额外的表?

Django没有额外的表?
EN

Stack Overflow用户
提问于 2009-08-21 17:56:13
回答 5查看 409关注 0票数 1

有没有可能编写Django应用程序,例如用于内部/个人使用现有的数据库,而不需要Djangos自己的表的‘开销’,而这些表通常是在启动项目时安装的?我想通过模型使用现有的表格,但没有所有其他在正常网页上肯定有用的东西。

原因是要构建小型的个人检查/管理工具,而不会侵扰遗留数据库。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-08-21 18:36:12

最值得注意的是定义了数据库表的django.contrib.auth,它在数据库中实现了自己的身份验证后端。如果你的应用程序被防火墙保护了,并且你信任所有可以访问它的人,你可能会一起跳过身份验证。如果不是这样,你想使用现有的基础设施创建自己的身份验证机制,你很可能想要使用另一个后端。如果你的web服务器设置了REMOTE_USER,你可以使用another builtin backend,并且你应该关闭并运行。否则,您将不得不实现您自己的来引用其他身份验证源。

在此基础上,您只需将模型设置为使用现有的数据库表,而不是让它们自己创建。例如,您可以对此进行非常精细的控制

代码语言:javascript
复制
class MyModel(django.db.Model):
    MyTextField = django.db.TextField(db_column="mytextfield", primary_key=True)

    class Meta:
        db_table = "my_table"

这样,您就可以指定每个模型的每个字段所表示的确切的表和列。请注意,您可以将主键设置为整数以外的类型。django的ORM的一个限制是每个模型必须恰好有一个主键。因此,如果您的表没有主键,要么添加一个主键,要么在没有django的ORM帮助的情况下继续下去。

此外,由于您正在绑定一个现有的数据集,可能与其他应用程序相关,因此您不太可能想要使用./manage.py syncdb,因为它可能会做一些不受欢迎的事情。

票数 1
EN

Stack Overflow用户

发布于 2009-08-21 18:03:51

Django本身不会安装任何表。它附带了一些预制的应用程序,这些应用程序可以安装表,但可以通过从INSTALLED_APPS设置中删除它们来轻松禁用这些应用程序。

票数 3
EN

Stack Overflow用户

发布于 2010-07-06 21:57:27

您也可以添加一个额外的数据库(设置为默认)来保存额外的django开销:

代码语言:javascript
复制
DATABASES = {
     'default': {
            'ENGINE'    : 'django.db.backends.sqlite',
            'NAME'      : 'djangoOverhead',
            'USER'      : '',
            'PASSWORD'  : '',
            'HOST'      : 'localhost' },
     'legacyAppTables': {
            'ENGINE'    : 'django.db.backends.mysql',
            'NAME'      : 'legacyAppTables',
            'USER'      : '',
            'PASSWORD'  : '',
            'HOST'      : 'someRemoteHost' }, }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1313362

复制
相关文章

相似问题

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