Django-admin链接列问题

时间:2017-06-08 10:16:20

标签: python django django-admin

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而不是函数的东西时,它可以顺利运行。

2 个答案:

答案 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