Чтобы ограничить доступ к основным данным модели для текущего зарегистрированного пользователя, я использовал набор запросов в admin.py, подобный следующему:
@admin.register(MyModel)
class MyModel(admin.ModelAdmin):
def get_queryset(self, request):
qs = super().get_queryset(request)
if request.user.is.superuser:
return qs
return qs.filter(resource_owner=request.user)
...
Владелец - это имя поля, в котором хранится текущий вошедший в систему пользователь, и это работает как чудо!
Однако это, очевидно, не работает со строками.
Я искал документацию и (может быть ошибочным, но) понимаю, что для этого можно использовать ModelAdmin.get_formsets_with_inlines. Будучи стажером, я не уверен, как применить этот набор форм, чтобы ограничить доступ только к данным встроенной модели владельцев, так же, как вышеуказанный набор запросов применяется к основной модели.
Документация цитируется ниже как:
For example if you wanted to display a particular inline only in the change view, you could override get_formsets_with_inlines as documentedfollows:
class MyModelAdmin(admin.ModelAdmin):
inlines = [MyInline, SomeOtherInline]
def get_formsets_with_inlines(self, request, obj=None):
for inline in self.get_inline_instances(request, obj):
# hide MyInline in the add view
if not isinstance(inline, MyInline) or obj is not None:
yield inline.get_formset(request, obj), inline
Я пытался применить описанный выше набор форм, но слишком неопытен, чтобы понять это. Если бы кто-нибудь мог помочь мне в том, как применить набор форм для встроенных функций и ограничить данные для владельца, я был бы очень признателен. Все остальное в моем приложении для новичков работает, кроме этого ... и я действительно застрял.
Для ясности, владелец - это поле в моей встроенной модели, в котором хранится текущий вошедший в систему пользователь, но без данных, ограничивающих набор форм, пользователь в настоящее время может видеть данные, сохраненные всеми в встроенной модели.
Заранее спасибо.