Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » права - редактирование своих записей в таблицах [RSS Feed]

#1 Окт. 25, 2009 09:48:41

qman
От:
Зарегистрирован: 2007-07-02
Сообщения: 444
Репутация: +  0  -
Профиль   Отправить e-mail  

права - редактирование своих записей в таблицах

есть пример про книги
http://www.djangobook.com/en/2.0/chapter06/
Возможно ли назначить права чтобы писатели книг через админку джанго редактировали только свои книги?
Т.е. книги которые они добавили на сайт? Или стандартной админкой не обойтись? Требуется рисовать свои формы и прочее.
Всем спасибо



Офлайн

#2 Окт. 25, 2009 11:37:17

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

права - редактирование своих записей в таблицах

в классе админки:

    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
...
над будет статью написать про расширение админки)

Офлайн

#3 Окт. 30, 2009 20:30:35

qman
От:
Зарегистрирован: 2007-07-02
Сообщения: 444
Репутация: +  0  -
Профиль   Отправить e-mail  

права - редактирование своих записей в таблицах

Добрый вечер,
подскажите, а возможно, в приложении создать формы для обработки данных из БД аналогичные, создаваемым в админке?
P.S. т.е. models.py и admin.py созданы, теперь только не описывать формы в form.py, а создать формы на сайте из классов, используемых для отображения форм в админке?! Очень удобные формы в админке, учитывая возможность сортировки при щелчке по столбцу! или поле для быстрого поиска!



Отредактировано (Окт. 30, 2009 20:56:58)

Офлайн

#4 Окт. 30, 2009 20:32:38

qman
От:
Зарегистрирован: 2007-07-02
Сообщения: 444
Репутация: +  0  -
Профиль   Отправить e-mail  

права - редактирование своих записей в таблицах

slav0nic
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? Если нет то куда?



Офлайн

#5 Ноя. 2, 2009 14:35:00

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

права - редактирование своих записей в таблицах

куда захошь, это не фишка админки.
По поводу форм лучше глянь формы, там если и есть в чём-то фишка, то в виджетах.

Офлайн

#6 Ноя. 2, 2009 17:34:04

qman
От:
Зарегистрирован: 2007-07-02
Сообщения: 444
Репутация: +  0  -
Профиль   Отправить e-mail  

права - редактирование своих записей в таблицах

slav0nic
куда захошь, это не фишка админки.
По поводу форм лучше глянь формы, там если и есть в чём-то фишка, то в виджетах.
а ссылочку можете дать на фишку в виджетах?



Отредактировано (Ноя. 2, 2009 17:34:32)

Офлайн

#7 Ноя. 3, 2009 10:21:23

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

права - редактирование своих записей в таблицах

Офлайн

  • Начало
  • » Django
  • » права - редактирование своих записей в таблицах[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version