【问题标题】:Django - admin questionsDjango - 管理问题
【发布时间】:2015-01-29 12:48:50
【问题描述】:

我知道在 stackoverflow 中也有人问过类似的问题,但这不仅仅是一个问题,而是对我的基本理解的确认。这是针对那些有 Django 知识的人。

我的困境是 Django 中 admin.py 中的函数 admin.site.register()。我的理解是它接受了许多论点;我现在正在通过研究 Django 网站上提供的教程来玩弄它。我此时的论据是 Questions(model), QuestionsAdmin(admin.ModelAdmin)

我有这个admin.site.register(Question,QuestionAdmin)

QuestionAdmin 类更改管理中问题页面的外观。它允许我添加、减少同时显示的信息数量、编辑外观。

但是,当我尝试这个 admin.site.register(Questions,Choice) 时,Choice 是一个模型。它吐出一个错误。

这是否意味着 admin.site.register 接受参数:

a 您要添加/注册的模型 b) 为模型使用而专门创建的任何类,例如函数、语句更改 模型在 display/view 中的视图和功能。

此外,当我将参数数量增加到 3 时,它会吐出一个错误,说我输入了 4。

这个函数是否在开头考虑了一个 nul 值?

请多多指教哦 Django 的巫师和术士。

【问题讨论】:

  • 附注 QuestionsAdmin(class) 应该是 QuestionsAdmin(admin.ModelAdmin)
  • 真的不清楚你在问什么。您正确描述了第二个参数是什么以及它的作用。那么你为什么还要尝试通过模型类呢?您希望通过这样做实现什么目标?
  • 在实现某件事方面,基本上只是确认我对 admin.site.register 的理解是准确的。这让我松了一口气,我走在正确的道路上。传递一个模型类只是为了看看发生了什么以及为什么它会吐出一个错误,我正在尝试/错误以了解它的含义。此外,每当发生错误时,假设我有 3 个参数,编译器会说我有 4 个。这个函数是否将 Nul 视为一个值,即使它没有编码?
  • 不,这是标准的 Python 行为,因为方法调用的第一个参数始终是 self.
  • 感谢 Daniel 感谢它,我也是 python 新手,我正在通过 web 开发学习它。这是我应该注意和记住的事情。谢谢

标签: python django admin


【解决方案1】:

对于您拥有的每个Model(和ModelAdmin),您应该分别调用register,例如:

admin.site.register(Question, QuestionAdmin)
admin.site.register(Choice)

关于4个参数的错误是因为register是默认AdminSite实例的方法,所以第一个参数是self。来自django code

def register(self, model_or_iterable, admin_class=None, **options):

【讨论】:

  • 哦,好的,谢谢你,所以基本上每对 Model-ModelAdmin 只注册一次。任何额外的 Model 或 Model-ModelAdmin 对都应该作为一个新的寄存器来完成。我应该记下标准的 python 行为,谢谢我使用了pair 这个词,如果你没问题的话,因为每个模型至少有一个 ModelAdmin。
猜你喜欢
  • 2011-05-16
  • 2011-08-08
  • 2011-06-17
  • 1970-01-01
  • 2012-03-31
  • 2012-12-23
  • 1970-01-01
  • 2011-06-25
  • 2018-10-22
相关资源
最近更新 更多