python - 如何在django中从外部应用程序添加与模型的多对一关系

标签 python django foreign-key-relationship

我的 django 项目使用 django-helpdesk 应用程序。 这个应用程序有 Ticket 模型。

我的应用程序有一个 Client 模型,它应该与 ticket 具有一对多关系 - 例如,我可以列出与特定客户端有关的所有 ticket。

通常我会将 models.ForeignKey(Client) 添加到 Ticket 但它是一个外部应用程序,我不想修改它( future 更新问题等)。

我对 ManyToManyOneToOne 没有任何问题,但不知道如何使用 ManyToOne (许多来自外部应用程序的票证从我的应用程序到一个客户)

最佳答案

更 hacky 的解决方案:您可以在 Client 类之后的模块级代码中执行以下操作:

class Client(models.Model):
    ...

client = models.ForeignKey(Client, related_name='tickets')
client.contribute_to_class(Ticket, name='client')

我还没有完全测试它(我没有做任何实际的数据库迁移),但是正确的描述符(ReverseSingleRelatedObjectDescriptor for TicketForeignRelatedObjectsDescriptor for Client) 被添加到类中,South 识别新字段。到目前为止,它似乎像普通的 ForeignKey 一样工作。

编辑:实际上甚至没有那么hacky。这正是 Django 跨类设置外键的方式。它只是在构建反向相关类时通过添加字段来反转过程。如果任一模型上的任何原始字段被遮蔽,它都不会引发错误。只要确保你不这样做,因为它可能会破坏你的代码。除此之外,我认为应该没有任何问题。

关于python - 如何在django中从外部应用程序添加与模型的多对一关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22989689/

相关文章:

python - 一个类可以继承__init__()函数吗? (Python)

python - 将两个 pandas 数据框与第一个数据框的索引连接起来?

mysql - Django:过滤带注释的值

python - 有人能解释一下 django 中 "etag"有什么用吗?

python - 访问 Django 模板中的多对多字段

python - 使用条件为 "OR"的字典在 Q 查找中包含属性的最佳 pythonic 方法

python - 从(几乎)随机数据中找到最佳结果的方法

database-design - 添加(或不添加)FK 以使 SELECT 更简单

database - 许多 fk 表的一个表列?

ruby-on-rails - Rails 模型中的一对多关系