django-admin – inlines -django
发布时间:2020-12-20 11:11:04 所属栏目:Python 来源:网络整理
导读:我有2个模型.我希望模型2与model1内联.在管理页面我想显示模型2的一些字段作为内联,所有这些都是readonly.ALso当我点击内联的值我应该使用该值将我链接到model2 一个内联,只显示字段.我想将内联模型字段显示为只读 解决方法 由于newforms管理员,这(通常)很容
我有2个模型.我希望模型2与model1内联.在管理页面我想显示模型2的一些字段作为内联,所有这些都是readonly.ALso当我点击内联的值我应该使用该值将我链接到model2
一个内联,只显示字段.我想将内联模型字段显示为只读 解决方法
由于newforms管理员,这(通常)很容易做到.基本上,您需要创建自定义内联子类并覆盖用于在管理中呈现它的模板.假设您有一个名为app的应用程序并模型Model1和Model2,您将执行以下操作:
首先,创建您的admin.py文件: from django.contrib import admin from app.models import Model1,Model2 class Model2Admin(admin.ModelAdmin): list_display = (...) class Model2Inline(admin.TabularInline): model = Model2 extra = 0 template = 'admin/app/model2/inline.html' class Model1Admin(admin.ModelAdmin): list_display = (...) inlines = (Model2Inline,) admin.site.register(Model1,Model1Admin) admin.site.register(Model2,Model2Admin) 然后,在admin / app / model2中创建inline.html模板: {% load i18n %} <div class="inline-group"> <div class="tabular inline-related {% if forloop.last %}last-related{% endif %}"> {{ inline_admin_formset.formset.management_form }} <fieldset class="module"> <h2>{{ inline_admin_formset.opts.verbose_name_plural|capfirst|escape }}</h2> {{ inline_admin_formset.formset.non_form_errors }} <table> <thead> <tr> <th colspan="2">Field1</th> <th>Field2</th> <th>Field3</th> </tr> </thead> {% for inline_admin_form in inline_admin_formset %} <tr class="{% cycle row1,row2 %}"> <td class="original"> <!-- Render all form fields as hidden fields: --> {{ inline_admin_form.pk_field.field }} {% spaceless %} {% for fieldset in inline_admin_form %} {% for line in fieldset %} {% for field in line %} {{ field.field.as_hidden }} {% endfor %} {% endfor %} {% endfor %} {% endspaceless %} </td> <!-- then display just the values of the fields you're interested in: --> <td class="field1"> <!-- Make this a link to the change detail page for this object: --> <a href="{% url admin:app_model2_change inline_admin_form.original.pk %}">{{ inline_admin_form.original.field1 }}</a> </td> <td class="field2"> {{ inline_admin_form.original.field2 }} </td> <td class="field3"> {{ inline_admin_form.original.field3 }} </td> </tr> {% endfor %} </table> </fieldset> </div> </div> 接下来,将您的应用程序添加到settings.py中的INSTALLED_APPS – 不要忘记添加django.contrib.admin :). 最后,编辑您的根urls.py以包含以下行: from django.conf.urls.defaults import * from django.contrib import admin admin.autodiscover() urlpatterns = patterns('',... (r'^admin/',include(admin.site.urls)) ) 应该这样做.请注意,admin.site.urls会使url反转成为可能,只会在django 1.1之后发挥作用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |