2017-02-18 6 views
0

Basic способ сделать это в models.py, пример:Django: как работают allow_tags и short_description?

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_tags и short_description работает? и где я могу найти соответствующую документацию?

Я не нашел его в documentation или также на source code

ответ

2

Вы смотрите на разрабатываемой версии документации. Если вы посмотрите на Django 1.10 (прокрутите вниз до «Устаревший с версии 1.9»), вы увидите, что они удаляют опцию allow_tags и заменяют ее другими способами достижения того же. Есть много примеров того, как использовать short_description, хотя, поскольку он не устарел.

Если вы действительно хотите увидеть исходный код, here's the line where it gets the short description. Не беспокойтесь о allow_tags, так как он удален в 1.11 - он должен теперь выполняться автоматически, помещая строку как безопасную, используя mark_safe().


Как примечание стороны, вам не нужно, чтобы добавить метод custom_tag() в обоих местах. Администратор просматривает как модель, так и класс администратора для нее, поэтому ее достаточно. Если он не будет использоваться вне администратора, я бы порекомендовал разместить его внутри класса admin и не сделать модель более сложной.

+0

humbb Я вижу ... большое вам спасибо ... (y) –

 Смежные вопросы

  • Нет связанных вопросов^_^