在this回答后,我想在我的管理页面添加一个链接列
extern crate core;
pub struct RingBuffer(Box<[u8;4194304]>);
impl core::default::Default for RingBuffer {
fn default() -> Self {
static DEFAULT_VALUE: [u8;4194304] = [0u8;4194304];
RingBuffer(Box::<[u8;4194304]>::new(DEFAULT_VALUE))
}
}
fn main() {
let mut x = RingBuffer::default();
x.0[1] = 1;
x.0[4194302] = 2;
println!("Zeros; {:} {:} {:} {:}",x.0[0], x.0[1], x.0[4194302], x.0[4194303]);
}
但我得到的回报是:
class AnswerAdmin(admin.ModelAdmin):
list_display = ('__str__', 'link_to_question', 'time_created', 'time_updated', 'created_by', 'down_vote', 'up_vote')
def link_to_question(self, obj):
link = urlresolvers.reverse("admin:QnA_question_change",
args=[obj.question.id]) # model name has to be lowercase
text = obj.question.__str__
str = format_html("{}", text)
return mark_safe(u'<a href="%s">%s</a>' % (link, str))
class Meta:
model = Answer
我只想在我的管理员中显示“这是一个问题...”部分。
旁注: 当我使用类似obj.question.text而不是函数的东西时,它可以顺利运行。
答案 0 :(得分:1)
目前尚不清楚为什么使用format_html
然后将结果传递给mark_safe
。您应该可以使用format_html
一步完成。如果用户插入了恶意内容,则具有转义text
的优势。
link = urlresolvers.reverse(...)
text = obj.question
link_str = format_html('<a href="{}">{}</a>', link, text)
要调用__str__
方法,您需要使用obj.question.__str__()
调用它。但是,调用str(obj.question)
而不是obj.question.__str__()
更为pythonic。在这种情况下,我认为您根本不需要使用str()
,因为您使用的是format_html
。
答案 1 :(得分:0)
只需设置方法的allow_tags = True属性。
class AnswerAdmin(admin.ModelAdmin):
list_display = ('__str__', 'link_to_question', 'time_created', 'time_updated', 'created_by', 'down_vote', 'up_vote')
def link_to_question(self, obj):
link = urlresolvers.reverse("admin:QnA_question_change",
args=[obj.question.id]) # model name has to be lowercase
return u'<a href="{0}">{1}</a>'.format(link, obj.question)
link_to_question.short_description = u'Link'
link_to_question.allow_tags = True