Почему инлайн-элементы исчезают, когда я использую фильтр через get_queryset() в model.Admin?
У меня проблема с исчезновением элементов Inline. Это связано с моим переопределением get_queryset. Я не понимаю механизма, который стоит за этим. Любая помощь была бы очень кстати.
У меня есть две такие модели :
class Aventure(models.Model):
title = models.CharField(max_length=30)
sub_title = models.CharField(max_length=100)
author = models.ForeignKey(User, on_delete=models.CASCADE)
archive = models.BooleanField(default=False)
def __str__(self):
return self.title
class Scene(models.Model):
title = models.CharField(max_length=30)
description = models.TextField()
aventure = models.ForeignKey(Aventure, on_delete=models.CASCADE)
author = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.title
А два model.Admins вот так :
class AventureAdmin(admin.ModelAdmin):
readonly_fields = ('author',)
list_display = ('title', 'author',)
inlines = [
SceneInline,
]
# allow to save the logged in user to be set has the author
def save_model(self, request, obj, form, change):
# dans le cas où l’utilisateur n’est pas renseigné
if getattr(obj, 'author', None) is None:
obj.author = request.user
obj.save()
# Allow to show only the 'Aventure' instances where the author is the logged in user.
def get_queryset(self, request):
qs = super().get_queryset(request)
print(qs)
if request.user.is_superuser:
return qs
return qs.filter(author=request.user)
class SceneInline(admin.TabularInline):
list_display = ('title', 'author',)
model = Scene
show_change_link = True
extra = 0
fields = ('title', 'author')
А когда набор запросов фильтруется по автору (значит, я не суперпользователь), элементы инлайн-сцены больше не показываются, даже если они соответствуют автору, которого я ищу. Я не понимаю, почему.
Как суперпользователь (результат, который я хотел бы видеть для всех) :

Элемент Inline исчез...
