代码之家  ›  专栏  ›  技术社区  ›  Daniel Rhoden

有没有办法在模型中表达Django管理设置,而不是admin.py?

  •  2
  • Daniel Rhoden  · 技术社区  · 16 年前

    谈论Django 1.1.1。我曾经认为(0.96)放在admin.py文件中的东西是模型内部类的一部分。

    把所有这些都放在一个地方有一种美。但我不知道这种改变是否出于必要。有没有令人信服的理由?

    4 回复  |  直到 16 年前
        1
  •  2
  •   Peter Rowell    16 年前

    他们拿走了这个特殊的魔法,但是没有什么可以阻止你把admin.ModelAdmin子类放在models.Model子类之后。我更喜欢自己把它们放在一起,因为我不太可能忘记在列表中添加一个字段以显示在管理显示中。

        2
  •  0
  •   Fragsworth    16 年前

    也许在模型中使用这些东西不是一个好主意,因为当使用站点作为非管理员时,这将是多余的信息((出于性能原因)

        3
  •  0
  •   sheats    16 年前

    在最新版本中,没有任何方法将模型定义中的管理选项表示为内部类。但是没有理由不能将ModelAdmin类放在models.py文件中的Model类之后。然后,您可以在定义之后立即调用admin.site.register()。

    对于一个模型,您可能会遇到多次调用register()的问题,这将生成一个错误。但是models.py应该只加载一次,所以这应该可以工作。如果没有,您可以明确地在models.py中声明ModelAdmin类,然后将所有register()调用放在admin.py中。

    我可以考虑将其放在admin.py中的几个原因是:

    • 惯例——这似乎正在成为一种最佳实践。
    • 解耦——管理定义实际上与模型没有多大关系。
    • 清洁度——可能不需要在models.py文件中填充您不会做太多更改的内容。

        4
  •  0
  •   ha22109    16 年前

    在模型中使用类Admin,就像使用类Meta一样 然后定义你想要什么