Django admin - фильтр в get_queryset не работает - PullRequest
0 голосов
/ 20 марта 2020

У меня есть эти две модели

class Invitacion(models.Model):
   id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
   host = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
   name = models.CharField(max_length=256, verbose_name="Nombre Invitacion")


class Invitado(models.Model):
   id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
   invitacion = models.ForeignKey(Invitacion, on_delete=models.CASCADE)
   name = models.CharField(max_length=50)
 ...

И я зарегистрировал их в админке с помощью

admin.site.register(Invitacion)

@admin.register(Invitado)
class InvitadoAdmin(admin.ModelAdmin):
    def get_queryset(self, request):
        if request.user.is_superuser:
            return Invitado.objects.all()
        return Invitado.objects.filter(invitacion__host=request.user)

Однако этот фильтр не работает (он возвращает пустой набор запросов):

return Invitado.objects.filter(invitacion__host=request.user)

Если я фильтрую по оболочке, она работает, но не по админке. У меня есть группа администраторов, которая имеет разрешение только на добавление / изменение / удаление Invitados

...