Python 使用注释而不是模型属性

Python 使用注释而不是模型属性,python,django,django-models,django-admin,Python,Django,Django Models,Django Admin,该函数对于为表的每一行定义计算字段非常有用。模型属性也可用于定义计算字段,但有一些限制,例如,不能用于排序 模型属性是否可以完全替换为带注释的字段?什么时候可以使用每种方法?注释、属性和其他方法的差异 在某些情况下,注释肯定比属性更好、更容易。这些通常是易于在数据库中进行的计算,并且逻辑易于阅读 另一方面,Django@property是将计算逻辑写入模型的一种非常简单的python方式。一些人认为它们是整洁的东西,另一些人认为属性应该被烧掉并隐藏起来,因为它们将程序逻辑混合到数据对象中,这增加

该函数对于为表的每一行定义计算字段非常有用。模型属性也可用于定义计算字段,但有一些限制,例如,不能用于排序

模型属性是否可以完全替换为带注释的字段?什么时候可以使用每种方法?

注释、属性和其他方法的差异 在某些情况下,注释肯定比属性更好、更容易。这些通常是易于在数据库中进行的计算,并且逻辑易于阅读

另一方面,Django@property是将计算逻辑写入模型的一种非常简单的python方式。一些人认为它们是整洁的东西,另一些人认为属性应该被烧掉并隐藏起来,因为它们将程序逻辑混合到数据对象中,这增加了复杂性。我认为,尤其是装饰师是相当整洁的

然而,属性和注释并不是Django ORM中查询和计算事物的唯一方法

在许多复杂的情况下,属性或模型、管理器或QuerySet方法(尤其是使用)在定制查询时具有最大的灵活性

大多数情况下,无论您使用哪种方法,速度都不重要,应该使用最干净或最紧凑的选项,即最容易写入和读取的选项。尽量保持它的简单和愚蠢,你将有最少的复杂代码来维护

探索、基准测试和优化 在某些情况下,当您遇到性能问题并最终分析SQL查询时,您可能会被迫使用注释和自定义查询来优化所做查询的复杂性。当您在数据库中进行复杂的查找,并且必须在属性中计算内容或创建自定义SQL查询时,这种情况尤其如此

如果您有大的查询集,那么计算属性中的内容可能会非常复杂,因为您必须在Python中运行这些计算,因为在Python中,对象很大,迭代很慢。另一方面,通过自定义SQL查询计算数据可能是一个需要维护的噩梦,特别是如果您正在维护的SQL不是由您编写的

最后归结到速度要求和计算成本。如果用普通Python进行计算不会降低服务速度或花费金钱,那么您可能不应该进行优化。当然,如果您为一组服务器付费,那么合理的优化可能会为您带来节省,您可以在其他地方使用。用10个小时来优化某些代码片段可能不会得到回报,所以在这里要非常小心

在优化案例中,如果你不是预言家,并且本能地知道问题所在,那么你必须权衡不同的利弊,尝试不同的解决方案。如果问题是显而易见的,它可能会被提前优化掉,对吗

在尝试不同的选项时,SQL和是您的朋友

请记住,许多查询问题也是与数据库相关的问题,而糟糕的数据库设计或维护可能会影响性能。记住要定期跑步,并尽量保持平衡

工具式Django调试工具栏特别有用,因为它可以帮助进行分析和SQL分析。许多IDE(如PyCharm)甚至在运行的服务器上也提供了评测。如果您想进行开发设置并将不同的工具集成到其中,这非常有用。

注释、属性和其他方法的差异 在某些情况下,注释肯定比属性更好、更容易。这些通常是易于在数据库中进行的计算,并且逻辑易于阅读

另一方面,Django@property是将计算逻辑写入模型的一种非常简单的python方式。一些人认为它们是整洁的东西,另一些人认为属性应该被烧掉并隐藏起来,因为它们将程序逻辑混合到数据对象中,这增加了复杂性。我认为,尤其是装饰师是相当整洁的

然而,属性和注释并不是Django ORM中查询和计算事物的唯一方法

在许多复杂的情况下,属性或模型、管理器或QuerySet方法(尤其是使用)在定制查询时具有最大的灵活性

大多数情况下,无论您使用哪种方法,速度都不重要,应该使用最干净或最紧凑的选项,即最容易写入和读取的选项。尽量保持它的简单和愚蠢,你将有最少的复杂代码来维护

探索、基准测试和优化 在某些情况下,当您遇到性能问题并最终分析SQL查询时,您可能会被迫使用注释和自定义查询来优化所做查询的复杂性。这可能是 尤其是当您在数据库中进行复杂的查找,并且必须在属性中计算内容或创建自定义SQL查询时

如果您有大的查询集,那么计算属性中的内容可能会非常复杂,因为您必须在Python中运行这些计算,因为在Python中,对象很大,迭代很慢。另一方面,通过自定义SQL查询计算数据可能是一个需要维护的噩梦,特别是如果您正在维护的SQL不是由您编写的

最后归结到速度要求和计算成本。如果用普通Python进行计算不会降低服务速度或花费金钱,那么您可能不应该进行优化。当然,如果您为一组服务器付费,那么合理的优化可能会为您带来节省,您可以在其他地方使用。用10个小时来优化某些代码片段可能不会得到回报,所以在这里要非常小心

在优化案例中,如果你不是预言家,并且本能地知道问题所在,那么你必须权衡不同的利弊,尝试不同的解决方案。如果问题是显而易见的,它可能会被提前优化掉,对吗

在尝试不同的选项时,SQL和是您的朋友

请记住,许多查询问题也是与数据库相关的问题,而糟糕的数据库设计或维护可能会影响性能。记住要定期跑步,并尽量保持平衡

工具式Django调试工具栏特别有用,因为它可以帮助进行分析和SQL分析。许多IDE(如PyCharm)甚至在运行的服务器上也提供了评测。如果您想进行开发设置并将不同的工具集成到其中,这是非常有用的