Django模型查找的最佳实践

时间:2014-11-13 19:47:45

标签: django foreign-key-relationship maintainability

我有一个Django models.py声明了一堆不同的类,包括一些摘要,它们通过各种ForeignKey,OneToOne和ManyToMany相互关联关系。一些模型暗示与其他机器的交互 - 所以我使用Django的signals来观察相关模型的变化,并通知远程机器影响它们的变化。到目前为止,非常好。

由于存在大量信号和一堆模型,我将这些信号放在一个单独的文件(signals.py)中,并定义了几个函数来注册&取消注册为一组。 models.py的结尾只调用register_all(),一切都是自动发生的。如果某些事情需要发生没有发送远程信号(例如单元测试),我可以事先打电话给unregister_all(),然后register_all()一旦我完成了奇怪的事情块。我喜欢从模型中分离信号,因为它使程序员更容易找到她正在寻找的东西。

然而,这确实引起了一些奇怪的问题,因为我偶尔需要遍历一些关系。信号采用参数(sender, **kwargs),并且(取决于信号),kwargs可以包括项目"实例"和/或"模型"。仍然很好 - 这为我的代码提供了一个可靠的起点,可以进行任何查找。

现在,对于实际问题:是否有一种优选的方式可以连接3-5步?我可以在模式get_model('myapp', 'MyModel')MyModel = sender.parent.field.rel.to之间进行选择,两者都可以正常工作。是否有理由选择其中一个?我希望最大限度地提高代码的可读性,并在关系或模型名称发生变化时尽可能轻松地进行更改....当然,快速&可靠的操作是首选。

0 个答案:

没有答案