Аналог 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)