Форум сайта python.su
есть пример про книги
http://www.djangobook.com/en/2.0/chapter06/
Возможно ли назначить права чтобы писатели книг через админку джанго редактировали только свои книги?
Т.е. книги которые они добавили на сайт? Или стандартной админкой не обойтись? Требуется рисовать свои формы и прочее.
Всем спасибо
Офлайн
в классе админки:
def queryset(self, request):
user = request.user
qs = self.model._default_manager.get_query_set()
qs = qs.filter(author=user)
return qs
def get_form_by_user(user, model):
'''
Возвращает нужную форму для админки в зависимости от пользователя
'''
user_groups = get_usergroups(user)
if EDITOR in user_groups and not user.is_superuser:
EditorForm = getEditorForm(model)
return EditorForm
elif user.is_superuser or MAINEDITOR in user_groups:
AdminForm = getAdminForm(model)
return AdminForm
WriterForm = getWriterForm(model)
return WriterForm
#forms.py
def getAdminForm(_model):
class AdminForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(AdminForm, self).__init__(*args, **kwargs)
self.fields['status'].choices = MAIN_EDITOR_STATUS_CHOICES
class Meta:
model = _model
exclude = ('author', 'main_page_status',)
return AdminForm
#admin.py
...
def get_form(self, request, obj=None, **kwargs):
form = get_form_by_user(request.user, self.model)
return form
...
Офлайн
Добрый вечер,
подскажите, а возможно, в приложении создать формы для обработки данных из БД аналогичные, создаваемым в админке?
P.S. т.е. models.py и admin.py созданы, теперь только не описывать формы в form.py, а создать формы на сайте из классов, используемых для отображения форм в админке?! Очень удобные формы в админке, учитывая возможность сортировки при щелчке по столбцу! или поле для быстрого поиска!
Отредактировано (Окт. 30, 2009 20:56:58)
Офлайн
slav0nicЭто вставить в forms.py? Если нет то куда?
def get_form_by_user(user, model): ‘'’ Возвращает нужную форму для админки в зависимости от пользователя ‘'’ user_groups = get_usergroups(user) if EDITOR in user_groups and not user.is_superuser: EditorForm = getEditorForm(model) return EditorForm elif user.is_superuser or MAINEDITOR in user_groups: AdminForm = getAdminForm(model) return AdminForm WriterForm = getWriterForm(model) return WriterForm
Офлайн
куда захошь, это не фишка админки.
По поводу форм лучше глянь формы, там если и есть в чём-то фишка, то в виджетах.
Офлайн
slav0nicа ссылочку можете дать на фишку в виджетах?
куда захошь, это не фишка админки.
По поводу форм лучше глянь формы, там если и есть в чём-то фишка, то в виджетах.
Отредактировано (Ноя. 2, 2009 17:34:32)
Офлайн
Офлайн