我有一个对象的标准管理员更改表单,通常的StackedInline表单用于ForeignKey关系.我希望能够将每个内联项链接到相应的完整大小的更改表单,因为内联项具有自己的内联项,我无法嵌套它们.
我已经尝试了从自定义小部件到自定义模板的所有内容,并且无法使任何工作.到目前为止,我以片段形式看到的"解决方案"似乎并不适用于内联.我正准备尝试使用jQuery进行一些DOM攻击,以使其正常工作并继续前进.
我希望我一定会错过一些非常简单的事情,因为这看起来像是一项简单的任务!
使用Django 1.2.
为了解决django-admin中缺少嵌套内联的问题,我将特殊情况放入两个模板中,以便在管理员更改页面和两个模型的内联管理员之间创建链接.
我的问题是:如何创建一个链接,从管理员更改页面或内联管理员的一个模型到管理员更改页面或相关模型的内联管理员干净利落,模板中没有讨厌的黑客?
我想要一个通用的解决方案,我可以应用于任何模型的管理员更改页面或内联管理员.
我有一个模型,post(不是它的真实姓名)既是blog管理页面上的内联,也有自己的管理页面.它不能仅仅是内联的原因是它具有带有外键的模型,只有在用它编辑时才有意义,并且只有在编辑时才有意义blog.
对于post管理页面,我更改了"fieldset.html"的一部分:
{% if field.is_readonly %}
<p>{{ field.contents }}</p>
{% else %}
{{ field.field }}
{% endif %}
Run Code Online (Sandbox Code Playgroud)
至
{% if field.is_readonly %}
<p>{{ field.contents }}</p>
{% else %}
{% ifequal field.field.name "blog" %}
<p>{{ field.field.form.instance.blog_link|safe }}</p>
{% else %}
{{ field.field }}
{% endifequal %}
{% endif %}
Run Code Online (Sandbox Code Playgroud)
创建指向blog管理页面的链接,其中blog_link是模型上的方法:
def blog_link(self):
return '<a href="%s">%s</a>' % (reverse("admin:myblog_blog_change",
args=(self.blog.id,)), escape(self.blog))
Run Code Online (Sandbox Code Playgroud)
我找不到id了的blog …
我正在使用 Django 1.4。我有两种类型的对象:零件和章节。零件通过外键有许多章节。在零件对象的管理页面中,我想查看“属于”该零件的章节列表。所以我这样做了:
from django.contrib import admin
from americano.apps.courses.models import Part, Chapter
class ChapterInline(admin.TabularInline):
model = Chapter
exclude = ['body', 'pub_date']
readonly_fields = ('name', 'name_extension', 'number', 'lang')
extra = 0
class PartAdmin(admin.ModelAdmin):
list_display = ('name', 'number')
search_fields = ['name']
ordering = ['number']
inlines = [ChapterInline]
class ChapterAdmin(admin.ModelAdmin):
list_display = ('name', 'number', 'part', 'pub_date')
list_display_links = ('name', 'part')
ordering = ['number']
search_fields = ['name']
admin.site.register(Part, PartAdmin)
admin.site.register(Chapter, ChapterAdmin)
Run Code Online (Sandbox Code Playgroud)
我现在想要的是使零件管理页面中列出的章节可单击。我希望他们链接到章节页面。我尝试在 ChapterInline 类中使用list_display_links = ('name',),但它不起作用。有人有想法吗?谢谢。
我知道这个问题已经被问过不止一次了,但是随着 Django 的新版本不断发展,我会再次问这个问题:
我正在使用模型用户(Django 用户,不在我的 models.py 中)并创建另一个带有用户外键的模型。
models.py :
class Plan(models.Model):
user = models.ForeignKey(User)
Run Code Online (Sandbox Code Playgroud)
我可以Plan通过在以下内容中执行此操作来简单地显示我的用户中的每一个admin.py:
class PlanInline(admin.TabularInline):
model = Plan
extra = 0
class MyUserAdmin(UserAdmin):
ordering = ('-date_joined', 'username')
inlines = [PlanInline,]
admin.site.unregister(User)
admin.site.register(User, MyUserAdmin)
Run Code Online (Sandbox Code Playgroud)
但事情即将变得更加棘手。我想添加一个外键指向的模型Plan:
class Order(models.Model):
plan = models.ForeignKey('Plan')
Run Code Online (Sandbox Code Playgroud)
我希望能够看到Orders每个Plan. 截至今天,在 Django Admin 中不可能嵌套内联(不编辑我想避免的 HTML):
User
-> Plan 1
-> Order 1
-> Order 2
-> Plan 2
-> Order 3
Run Code Online (Sandbox Code Playgroud)
所以我的想法是在每个计划的User Admin唯一A LINK 中 …