Аналог WordPress "is_admin" для функции Django? (Для проверки местоположения, а не разрешения.)

Мне нужно что-то вроде этой функции для Джанго.

Причина: я пишу виджет с отдельным конфигом для админа и других страниц. Конфиг определяется в настраиваемом поле:

class Article(models.Model):
    field = CustomField(config={'default': {}, 'admin': {}})

По этой причине я не могу расширить AdminTextareaWidget своим виджетом (часть текущего кода ниже). Или я могу? Как?

class CustomField(TextField):
    def __init__(self, config, *args, **kwargs):
        self.config = dict_merge(initial_config, config)
        super(CustomField, self).__init__(*args, **kwargs)
    def formfield(self, **kwargs):
        ###################################
        # need to check for admin page here
        ###################################
        defaults = {'widget': CustomWidget(self.config)}
        defaults.update(kwargs)
        return super(CustomField, self).formfield(**defaults)

class CustomWidget(Textarea):
    def __init__(self, config, attrs=None):
        #########
        # or here
        #########
        self.config = config
        super(CustomWidget, self).__init__(attrs)

1 ответ

Я думаю, что нашел ответ!
Может быть, это взломать, но это работает.

def formfield(self, **kwargs):
    # kwargs contain a widget name in admin! At least in Django 1.5.4.
    if 'widget' in kwargs and kwargs['widget'] is AdminTextareaWidget:
        config = self.config['admin']
    else:
        config = self.config['default']
    defaults = {'widget': CustomWidget(config)}
    defaults.update(kwargs)
    return super(CustomField, self).formfield(**defaults)
Другие вопросы по тегам