Django管理员的引导主题
tendenci-django-admin-bootstrapped的Python项目详细描述
使用引导的Django管理主题。它不需要任何种类 你这边的修改,只需将其添加到已安装的应用程序中。在
要求
- Django1.11
安装
- 使用pip install tendenci-django-admin-bootstrapped
- 在'django.contrib.admin'之前添加到INSTALLED_APPS:
'django_admin_bootstrapped',
- 玩得开心!在
配置
为了获得完整的bootstrap3体验,您可能需要对字段使用自定义呈现器。 树中有一个可用的,它需要安装django-bootstrap3应用程序。 要添加项目设置:
^{pr2}$默认情况下,Messages将有alert-info标记, 因此,您可能需要为不同的消息级别添加bootstrap3标记,以使它们具有适当的样式。 添加到项目设置文件:
from django.contrib import messages MESSAGE_TAGS = { messages.SUCCESS: 'alert-success success', messages.WARNING: 'alert-warning warning', messages.ERROR: 'alert-danger error' }
现在,添加如下消息:
messages.success(request, "My success message") messages.warning(request, "My warning message") messages.error(request, "My error message")
将导致:
糖果
使用模板将自定义html添加到任何模型的更改表单
您可以在创建模板的任何更改表单上注入自定义html 将admin_model_MODELNAME_change_form.html命名为应用程序的 模板文件夹。如: myapp/templates/myapp/admin_model_mymodelname_change_form.html或 project/templates/myapp/admin_model_mymodelname_change_form.html。在
内联可排序
您可以使用 代码的更改。在
首先,在模型中添加一个position字段(并对模型进行排序) 相应地),例如:
class TestSortable(models.Model): that = models.ForeignKey(TestMe) position = models.PositiveSmallIntegerField("Position") test_char = models.CharField(max_length=5) class Meta: ordering = ('position', )
然后在你的管理员py创建一个类来使用 django_admin_bootstrapped.admin.models.SortableInlinemixin,比如 这个:
from django_admin_bootstrapped.admin.models import SortableInline from models import TestSortable class TestSortable(admin.StackedInline, SortableInline): model = TestSortable extra = 0
现在可以像往常一样使用内联。查看屏幕截图部分以查看结果 看起来像。在
此功能由Kyle Bock提供。谢谢你凯尔!在
XHTML兼容
兼容html和xhtml。为django应用程序启用xhtml 将以下内容添加到设置.py:默认的“内容”类型= '应用程序/xhtml+xml'
管理中的通用查找
所有需要做的就是用 formfield_重写如下:
from django_admin_bootstrapped.widgets import GenericContentTypeSelect class SomeModelAdmin(admin.ModelAdmin): formfield_overrides = { models.ForeignKey: {'widget': GenericContentTypeSelect}, }
或者如果你想更具体一点:
from django_admin_bootstrapped.widgets import GenericContentTypeSelect class SomeModelAdmin(admin.ModelAdmin): def formfield_for_dbfield(self, db_field, **kwargs): if db_field.name == 'content_type': kwargs['widget'] = GenericContentTypeSelect return super(SomeModelAdmin, self).formfield_for_dbfield(db_field, **kwargs)
如果您决定使用formfield_overridesyou should be aware of its limitations with relation fields。在
这个特性(还有更多)是由Jacob Magnusson带来的。谢谢你雅各布!在
贡献
每一个代码、文档和UX贡献都是受欢迎的。在
发现问题?在bugtracker上报告!在
有空吗?帮助解决一个已经归档的问题,请记住在一个单独的分支上工作。在
截图
主页
下拉列表中包含过滤器的列表视图
更改窗体视图
- 项目
标签: