在 Django Admin 中,我想更改外键在多对多关系管理小部件中的显示方式
我有一个多对多关系:
class Book: title = models.CharField(...) isbn = models.CharField(...) def unicode(self): return self.title def ISBN(self): return self.isbn class Author: name = models.CharField(...) books = models.ManyToManyField(Book...)
在作者的管理界面中,我得到一个使用 unicode 显示书籍的多选列表。我想通过两种方式更改列表:
1)仅对于管理界面,我想显示 ISBN 编号,在其他地方,我只是打印出一个“图书”对象,我想显示标题。
2)如何为ManyToMany使用比MultipleSelectList更好的小部件。我如何指定使用 CheckBoxSelectList 来代替?
I have a ManyToMany relationship:
class Book: title = models.CharField(...) isbn = models.CharField(...) def unicode(self): return self.title def ISBN(self): return self.isbn class Author: name = models.CharField(...) books = models.ManyToManyField(Book...)
In the admin interface for Author I get a multiple select list that uses the unicode display for books. I want to change the list in two ways:
1) Only for the admin interface I want to display the ISBN number, everywhere else I just print out a "Book" object I want the title displayed.
2) How could I use a better widget than MultipleSelectList for the ManyToMany. How could I specify to use a CheckBoxSelectList instead?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
要显示 ISBN,您可以创建一个如下所示的自定义字段:
有一个 CheckboxSelectMultiple 对于 ManyToManyField 但它在管理上无法正确显示,因此您也可以编写一些 css 来修复该问题。
您需要为模型创建一个表单,并在管理类中使用它:
To display the ISBN you could make a custom field like this:
There's a CheckboxSelectMultiple for the ManyToManyField but it doesn't display correctly on the admin, so you could also write some css to fix that.
You need to create a form for the model, and use that in your admin class:
对于 2),在您的 AuthorAdmin 类中使用它:
检查此处: http://docs.djangoproject.com/en/dev/ref/contrib/admin/#ref-contrib-admin 有关创建自定义 ModelAdmin 类的说明。对于我自己的 Django 项目,我自己对此进行了很多思考,我认为 1) 需要修改管理模板来查看 Author 对象。
For 2), use this in your AuthorAdmin class:
Check here: http://docs.djangoproject.com/en/dev/ref/contrib/admin/#ref-contrib-admin for instructions on creating a custom ModelAdmin class. I've thought about this a lot myself for my own Django project, and I think 1) would require modifying the admin template for viewing Author objects.