管理站点列表与元组 Django

admin site list vs tuple django

自定义管理站点时,我们可以使用 listtuple,例如

@admin.register(Model_name)
class Model_nameAdmin(admin.ModelAdmin):
  list_display = ['a', 'b', 'c']  # using list
  # lets say a, b, c are fields of model(Model_name)
                    or 
  list_display = ('a', 'b', 'c')  # using tuple 

我很好奇在检索管理站点或类似内容时使用列表而不是元组是否有任何区别,反之亦然。我知道元组的性能优于列表,但我们不会在这里循环。我看过 whats-the-difference-between-lists-and-tuples, why-does-django-use-tuples-for-settings-and-not-listswhy-djangos-modeladmin-uses-lists-over-tuples-and-vice-versa,但没有得到我的答复。 一直使用元组更好吗?我专门询问管理站点。

在管理中你应该使用元组

元组和列表之间的区别在于您不能编辑元组 - 它是不可变的。因此,它们 python 的创建速度更快,并且使用的内存更少

由于您不会编辑这些属性的值,因此您应该使用元组

就所有实际意图和目的而言,这绝对没有任何区别。

性能上可能存在一些细微差异,但在这种情况下,速度上的任何差异都非常小,永远不会产生任何影响。还会有其他事情会对性能产生更大的影响。如果有一个应用程序的性能在我们谈论的那种规模上很重要,那么无论如何您甚至都不会使用 django-admin 来处理它的性能关键部分。 (它并非设计为面向用户的生产就绪站点)。

然而...

使用元组而不是列表是有充分理由的。 惯例!! 这是官方 django 文档 / 和其他人所做的。它可能看起来不是很重要,但是如果所有代码看起来都一样,那么它的可读性会更高。

我知道您可能会争辩说使用列表而不是元组不会影响可读性。但是,如果我正在阅读一些 django-admin 代码并看到正在使用列表,我可能会停下来思考一下为什么使用列表而不是元组。它只会让我印象深刻,我想知道为什么要这样做。最终我意识到没有充分的理由,那样时间就会被浪费掉。

与您可能使用的原因类似,风格指南(例如 PEP8)或格式化程序(例如 black)可确保每个人的代码看起来都一样。它只是让代码更漂亮。