Найти - Пользователи
Полная версия: права - редактирование своих записей в таблицах
Начало » Django » права - редактирование своих записей в таблицах
1
qman
есть пример про книги
http://www.djangobook.com/en/2.0/chapter06/
Возможно ли назначить права чтобы писатели книг через админку джанго редактировали только свои книги?
Т.е. книги которые они добавили на сайт? Или стандартной админкой не обойтись? Требуется рисовать свои формы и прочее.
Всем спасибо
slav0nic
в классе админки:
    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
...
над будет статью написать про расширение админки)
qman
Добрый вечер,
подскажите, а возможно, в приложении создать формы для обработки данных из БД аналогичные, создаваемым в админке?
P.S. т.е. models.py и admin.py созданы, теперь только не описывать формы в form.py, а создать формы на сайте из классов, используемых для отображения форм в админке?! Очень удобные формы в админке, учитывая возможность сортировки при щелчке по столбцу! или поле для быстрого поиска!
qman
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? Если нет то куда?
slav0nic
куда захошь, это не фишка админки.
По поводу форм лучше глянь формы, там если и есть в чём-то фишка, то в виджетах.
qman
slav0nic
куда захошь, это не фишка админки.
По поводу форм лучше глянь формы, там если и есть в чём-то фишка, то в виджетах.
а ссылочку можете дать на фишку в виджетах?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB