Python 如何在Django admin中包装文本(设置列宽)
我有一个模型Python 如何在Django admin中包装文本(设置列宽),python,django,django-admin,word-wrap,Python,Django,Django Admin,Word Wrap,我有一个模型 class Item(models.Model): id = models.IntegerField(primary_key=True) title = models.CharField(max_length=140, blank=True) description = models.TextField(blank=True) price = models.DecimalField(max_digits=12, decimal_places=2, b
class Item(models.Model):
id = models.IntegerField(primary_key=True)
title = models.CharField(max_length=140, blank=True)
description = models.TextField(blank=True)
price = models.DecimalField(max_digits=12, decimal_places=2, blank=True, null=True)
还有我的模特管理员
class ItemAdmin(admin.ModelAdmin):
list_display = ['item_view', 'description', 'item_price', 'seller_view', 'added_on']
actions = ['add_to_staff_picks']
search_fields = ('description', 'title')
def item_view(self, obj):
item = obj
url = reverse('admin:%s_%s_change' % ('adminuser', 'item'), args=(item.id,))
if item.is_active:
return '<font color="green">%s</font>' % (base64.b64decode(item.title))
return '<font color="red">%s</font>' % (base64.b64decode(item.title))
item_view.allow_tags = True
item_view.short_description = 'Title'
class ItemAdmin(admin.ModelAdmin):
列表显示=['项目视图','说明','项目价格','卖方视图','添加']
actions=['add_to_staff_picks']
搜索字段=('description','title')
def项目_视图(自身、obj):
项目=obj
url=reverse('admin:%s\u%s\u更改“%”('adminuser','item'),args=(item.id,)
如果item.u处于活动状态:
返回“%s%”(base64.b64解码(item.title))
返回“%s%”(base64.b64解码(item.title))
item_view.allow_tags=True
item_view.short_description='Title'
我需要显示Django管理站点中包装的字段“title”(为title列固定宽度)。我怎样才能做到这一点。请帮助。如果我理解正确,您需要Django的admin类的
列表显示属性
示例“admin.py”
更新答案(2014-08-08)
- 看到这个了吗
您的管理模块:
from django.conf import settings
class ItemAdmin(admin.ModelAdmin):
# Some other code
class Media:
js = (
'{0}js/jquery-1.10.2.min.js'.format(settings.STATIC_URL),
'{0}js/jquery.expander.min.js'.format(settings.STATIC_URL),
'{0}your_app/js/your_code.js'.format(settings.STATIC_URL),
)
比方说,我们将使用jquery.expander插件
然后您的“your_code.js”将如下所示:
;
$(document).ready(function() {
// Assuming that your element that would be wrapped comes as second td (column).
// If not, adjst the nth-child(2).
$('#result_list tbody tr td:nth-child(2)').each(function(e) {
$(this).expander({
slicePoint: 50, // default is 100
expandSpeed: 0,
expandEffect: 'show',
collapseSpeed: 0,
collapseEffect: 'hide',
expandPrefix: ' ', // default is '... '
expandText: '[...]', // default is 'read more'
userCollapseText: '[^]' // default is 'read less'
});
});
});
将函数添加到您的模型
,然后在modelAdmin
中调用该函数
#Model
def shortTitle(self):
return str(self.title)[:50]
#modelAdmin
class ItemAdmin(admin.ModelAdmin):
list_display = ['shortTitle', ...
没有。我已经添加了列表显示。但是假设我加了一段400长的话,它会很大,对吧?。。我想把我的描述包装成“这是关于看更多…”谢谢你,亚瑟。你让我很开心……)我使用了from django.templatetags.static导入static,而不是导入设置:)这会截断,但不会强制换行。
#Model
def shortTitle(self):
return str(self.title)[:50]
#modelAdmin
class ItemAdmin(admin.ModelAdmin):
list_display = ['shortTitle', ...