1

我遵循了 Django 网站上的一些示例,并且我理解 Django 希望您将项目的各个部分分成“应用程序”的想法。

每个“应用程序”都有自己的模型。因此,如果我想创建一个允许用户登录和修改某些数据(添加/编辑/删除)的应用程序,例如书籍集合和作者集合,我需要为此创建应用程序。

在这种情况下,我将有一个 包含两个模型类的“应用程序”书籍:和。该类将作为其字段之一。models.pyBookAuthorBookauthor = models.ForeignKey(Author)

所以这是我的问题:

  1. 如果我在该应用程序中创建一个新app模型,是否可以将 ForeignKey 字段包含在不同的模型中app
  2. 正如我所提到的,我想要一个允许用户登录的凭据“表”。这怎么可能实现?是否有必要使用用户模型启动一个新的“应用程序”,如“用户”?
  3. 如何将“自动增量”、“非唯一索引”和“触发器”等 MySQL 功能整合到这些模型中,还是必须手动或通过 MySQL 控制台/管理器完成?
4

2 回答 2

1
  1. 是的。看到这个问题:外键从一个应用程序到另一个应用程序在 Django
  2. 您可以为此使用 Django 的内置身份验证应用程序和用户对象。这是“包含电池”功能之一。见这里这里
  3. 我对 MySQL 没有太多的经验,但是你提到的一些东西是内置在 ORM 中的。即,如果您不指定不同的主键( AutoField 参考) ,则使用默认 id 字段自动发生自动增量。从 Django 1.5 开始添加非唯一索引。触发器似乎有点棘手,但这篇博文看起来不错。

顺便说一句,Django 聚合主题指南使用 Author 和 Book 模型作为主要示例。

于 2013-05-22T03:53:03.603 回答
1

没有什么能阻止您与其他应用程序中的模型建立关系。应用程序只是在逻辑位置对代码进行分组的一种方式。下面是一个示例,说明如何引用位于不同应用程序中的一个模型。

假设这是在一个名为 myapp 的模块中,您可以在其他应用程序中引用其他模型,其语法类似于以下。在此示例中,“auth”应用程序内部存在一个用户模型。

class MyModel(models.Model):
    ....
    user = models.ForeignKey('auth.User')

另请参阅:https ://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey

Django 内置了一个强大而灵活的用户系统。当您开始一个新项目时,默认情况下,它将创建一个用户表,可用于创建、管理和验证用户。

这是一些相关信息。(实际上,上面的示例显示了与内置用户表的关系。)您不必启动一个新的应用程序来定义用户,除非您想自定义用户框架的默认行为。

Django 自动增加主键字段记录。它为此创建了必要的数据库对象。如果需要,它还会强制执行唯一字段,并允许进行大量其他自定义。据我所知,Django 不支持数据库触发器。我相信触发事物的“Pythonic”方式可能是在您的代码中这样做。具体来说,Django/Python 将管理在其他人之后采取的行动。不过,这只是我的想法。

于 2013-05-22T04:07:17.107 回答