2013-07-31 109 views
3

我有这个在Django管理我的列表显示的方式显示/隐藏字段上的Django

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

正如你所看到的‘注意’可能会占用大量的空间,那么有没有一种方法,我可以vi的点击一个按钮就可以隐藏该字段?

+0

或者,您可以在'list_display'中为'notes'设置特定宽度检查[this](http://stackoverflow.com/a/12311286/1628832) – karthikr

+0

我欣赏评论,但是有一个简单的我显示/隐藏字段的方法? – Mdjon26

+1

是的 - 覆盖模板,并添加JQuery切换特定列的隐藏。 – karthikr

回答

0

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

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) 

如果你真的想有另一个按钮,您可以使用您的自定义内嵌类定义的字段:

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]