【问题标题】:Suggestions for splitting up application?拆分申请的建议?
【发布时间】:2017-05-03 08:51:18
【问题描述】:

我正在使用 Django 1.10 (Python 3) 创建一个站点。目的是跟踪我有什么书和读过哪些书。

我想为几个不同的模型制作简单的 CRUD 页面。我目前拥有的不同模型是:书籍、作者和出版商。这个列表可能会增长。我已阅读有关将您的网站拆分为更小的应用程序的信息。因此,一个应用程序用于图书 CRUD 页面,一个应用程序用于作者,一个应用程序用于出版商。

这是 Django 的意图吗?如果是这样,就会出现一个问题。我们如何分离模型? Books 模型具有依赖于 Author 和 Publisher 的字段。但既然他们现在在他们自己的应用程序中,我应该如何访问它?我不喜欢只从另一个应用程序导入的想法,因为它们应该是单独的应用程序。

【问题讨论】:

  • 你的最后一句话根本没有跟上。可以跨应用建立关系;确实,例如,如果您想将模型与用户联系起来,则必须这样做。

标签: django django-models


【解决方案1】:

如果它们是相关的,则不要将它们分开。取而代之的是,您可以重新考虑模型的结构并重新构建它们。

我不知道确切的字段属于 AuthorPublisher 但你 may 将它们组合成一个模型。这只是一个想法。

或者你也可以创建AuthorPublisher等表。

有一个名为Normalization 的进程基本上支持创建包含少量列的表,而不是创建一个大列。

此外,您还可以查看this thread

【讨论】:

    【解决方案2】:

    我想为几个不同的模型制作简单的 CRUD 页面。这 我目前拥有的不同模型是:书籍、作者和 出版商。这个列表可能会增长。我读过关于分裂 您的网站变成更小的应用程序。所以一个用于书籍 CRUD 页面的应用程序,一个 一个给作者,一个给出版商。

    我个人认为单个应用程序可以轻松处理这三个模型。

    这是 Django 的意图吗?如果是这样,就会出现一个问题。我们如何 分离模型? Books 模型具有依赖于 Author 的字段 和出版商。但既然他们现在在他们自己的应用程序中,我怎么样 应该访问它?我不喜欢只从 另一个应用程序,因为它们应该是单独的应用程序。

    为了访问字段,您需要实现外键关系。查看文档here

    如果您仍然认为模型应该存在于不同的应用程序中,则需要在使用它们之前导入它们。假设 Book 模型需要 Author 模型。您需要做的是导入 Author 模型并将其链接到具有 ManytoMany 或 ForeignKey 关系的书籍模型。:

    from django.db import models
    from app_authors.model import Author
    
    
    class Book()models.Model:
        author = ForeignKey(Author, null=True, blank = True, verbose_name = 'Author')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-31
      • 1970-01-01
      • 1970-01-01
      • 2018-12-28
      • 1970-01-01
      • 2011-06-26
      • 2014-01-24
      相关资源
      最近更新 更多