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