【问题标题】:A way to show/hide a field on Django一种在 Django 上显示/隐藏字段的方法
【发布时间】:2013-08-01 10:09:34
【问题描述】:

我在 Django admin 中将此作为我的列表显示

list_display = ('product', 'price', 'purchase_date', 'confirmed', 'get_po_number', 'notes')

在models.py中:

class PurchaseOrder(models.Model):
     notes = models.TextField( null=True, blank= True)

这就是这里的样子:

[1]:http://i.imgur.com/ZyKmpoF.png'

正如您所见,“笔记”可能会占用大量空间,那么有没有一种方法可以通过单击按钮来查看/隐藏该字段?

【问题讨论】:

  • 或者,您可以在list_display检查this中将特定宽度设置为notes
  • 感谢您的评论,但有没有简单的方法来显示/隐藏字段?
  • 是的 - 覆盖模板,并添加 JQuery 以切换隐藏特定列。
  • 甚至不需要覆盖模板。 these lines 应该做的事情。

标签: python django


【解决方案1】:

您可以调整字段的大小以使其变小,而不是做一个按钮。

class PurchaseAdmin(admin.ModelAdmin):
formfield_overrides = {
    models.CharField: {'widget': TextInput(attrs={'size':'20'})},
    models.TextField: {'widget': Textarea(attrs={'rows':4, 'cols':40})},
}

admin.site.register(PurchaseOrder, PurchaseAdmin)

如果你真的想要另一个按钮,你可以使用你自定义的 Inline 类来定义字段:

class CustomInline(admin.TabularInline):
    readonly_fields = [...'link',...]

    # important part which define what "link" looks like
    def link(self, instance):
       url = # your link to display the note
       return mark_safe(u'<a href="{u}">View Note</a>".format(u=url))

在您的自定义管理类中,请改用这个内联类:

class PurchaseAdmin(admin.ModelAdmin):
    inlines = [CustomInline]

【讨论】:

    猜你喜欢
    • 2011-11-02
    • 1970-01-01
    • 1970-01-01
    • 2013-02-14
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    • 2013-07-12
    • 1970-01-01
    相关资源
    最近更新 更多