Django:allow_tags和short_description如何工作?

时间:2017-02-18 14:51:35

标签: python django django-models django-admin

models.py中执行此操作的基本方法,例如:

class Foo(models.Model):
    title = models.CharField(max_length=200)
    ...

    def custom_tag(self):
        return ('custom: %s' % self.title)
    custom_tag.allow_tags = True
    custom_tag.short_description = _("Custom Tag")

或者,如果是admin.py的内部文件;

class FooAdmin(admin.ModelAdmin):
    list_display = ['title', 'custom_tag', ...]
    ...

    def custom_tag(self, instance):
        return ('custom: %s' % instance.title)
    custom_tag.allow_tags = True
    custom_tag.short_description = _("Custom Tag")


admin.site.register(Foo, FooAdmin)

我的问题是,allow_tagsshort_description如何运作?我在哪里可以找到相关的文件?

我无法在documentationsource code

找到它

1 个答案:

答案 0 :(得分:3)

您正在查看文档的开发版本。如果您查看Django 1.10的那个(向下滚动到"自版本1.9和#34后弃用;),您将看到他们正在删除allow_tags选项并且用其他方式取代同样的东西。有很多关于如何使用short_description的例子,因为它没有被弃用。

如果您真的想看到源代码,here's the line where it gets the short description。不要担心allow_tags,因为它已在1.11中删除了 - 现在应该通过使用mark_safe()将字符串标记为安全来自动完成。

作为旁注,您不需要在这两个地方添加custom_tag()方法。管理员在模型和管理类中查找它,这样就足够了。如果它不会在管理员之外使用,我建议将其放在管理类中,避免使模型更复杂。